0

我有一个完整的流星应用程序,但现在我想让它离线,所以我安装了 ground:db 和 appcache 这是我的包文件:

...
ground:db
appcache
ground:localstorage

然后我将我的收藏更改为:

Gebiete = new Mongo.Collection('gebiete');
Straßen = new Mongo.Collection('straßen');
Nummern = new Mongo.Collection('nummern');

Ground.Collection(Gebiete);
Ground.Collection(Straßen);
Ground.Collection(Nummern);

现在当应用程序在线时,我可以插入数据,然后我断开应用程序并重新启动(cordova)并且没有数据丢失。

但是当我离线并且我想插入某物时。它不起作用;(。我认为我不必更改我的方法文件,但这里有一种方法只是为了确保它是否正确:

Meteor.methods({
    neuesGebiet(Besitzer, Gebietsname, Gebietsnummer, Ort, Erstellungsdatum) {

         Gebiete.insert({ 
            Besitzer: Besitzer,         
            Gebietsname: Gebietsname,
            Gebietsnummer: Gebietsnummer,
            Ort: Ort,
            Erstellungsdatum: Erstellungsdatum
        });        
    }
});

在客户端,消息的调用方式如下: import { Meteor } from 'meteor/meteor'

Template.neuesGebietErstellen.onCreated(function () {
    this.subscribe('gebiete');
});


Template.neuesGebietErstellen.events({
    "submit .add-Gebiet": function (event) {
        var Gebietsname = event.target.Gebietsname.value;
        var Gebietsnummer = event.target.Gebietsnummer.value;
        var Ort = event.target.Ort.value;
        var Besitzer = Meteor.userId();
        var Erstellungsdatum = new Date();
        var Datum = Erstellungsdatum.toLocaleDateString();

        Meteor.call('neuesGebiet', Besitzer, Gebietsname, Gebietsnummer, Ort, Datum)

        FlowRouter.go('/');
        return false;        
    }
});

请帮我在离线时插入数据,因为我希望它是 100% 离线的

谢谢 ;)

4

1 回答 1

0

自从我使用 Ground:db 已经有一段时间了,但这就是我认为你缺少的东西......

首先,您可能只想要 Cordova 上的接地集合,所以

if(Meteor.isCordova) {
  Ground.Collection(Gebiete);
  Ground.Collection(Straßen);
  Ground.Collection(Nummern);
}

然后你需要使用Groundmethods来存储你的方法调用。所以在定义方法之后:

Meteor.methods({
  'neuesGebiet': function(...) {
    ...
  }
});

if( Meteor.isClient ) {
  Ground.methodResume([
    'neuesGebiet'
  ]);
}
于 2017-10-06T22:51:39.683 回答