Как вставить данные в ground.db в метеор в автономном режиме

У меня есть полностью работающее метеорное приложение, но теперь я хочу перевести его в автономный режим, поэтому я установил 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 } из '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% автономны

Спасибо;)

1 ответ

Прошло много времени с тех пор, как я использовал Ground: db, но вот что, по-моему, вам не хватает...

Во-первых, вы, вероятно, хотите только основанные коллекции на Кордове, поэтому

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

Затем вам нужно использовать Groundmethods для хранения ваших вызовов методов. Итак, после определения метода:

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

if( Meteor.isClient ) {
  Ground.methodResume([
    'neuesGebiet'
  ]);
}
Другие вопросы по тегам