Коллекция метеоров правильно наблюдает за изменениями

Доброе утро. Есть небольшие проблемы с наблюдением за сбором метеоров.

Стараюсь ловить моменты, когда моя коллекция меняется (добавляется запись, удаляется...)

Проблема в том, что моя "добавленная" функция наблюдателя вызывается не только тогда, когда я добавляю документ в коллекцию, но и когда я запускаю метеоритный проект, а метеорная система добавляет уже существующие записи в базу данных. (он вызывает каждый существующий документ из коллекции)

Помогите, пожалуйста, настроить обозреватель, мне нужно ловить только изменения от пользователя, а не от стартовой инициализации системы. Может быть, это способ инициализации моего наблюдателя на стороне сервера после инициализации базы данных метеоров?

Вот мой код:

/приложение/коллекции/коллекции.js

groups = new Mongo.Collection('groups');

groups.allow({
    insert:function(){
        return true;
    },
    update:function(){
        return true;
    },
    remove:function(){
        return true;
    }
});

/сервер/наблюдатели/groups_observer.js

groups.find().observe({
added: function(document){
    console.log('groups observe added value function');
    console.log(document);
},
changed:function(new_document, old_document){
    console.log('groups observe changed value function');
},
removed:function(document){
    console.log('groups observe removed value function');
}
});

person BagrijRoman    schedule 14.04.2016    source источник
comment
Добавленное поведение курсора в Meteor   -  person Francesco Pezzella    schedule 14.04.2016
comment
Спасибо за помощь. Это решение хочет добавить поле created_at в документы, но оно работает.   -  person BagrijRoman    schedule 14.04.2016


Ответы (1)


Способ решения этой проблемы:

  • добавить поле created_at в документы

  • добавить новый фильтр документов в обозреватель по полю created_at

Когда я добавляю документ в коллекцию:

groups.insert({
            created_by:Meteor.userId(),
            created_at: new Date(),
            .......
        });

новая, проработанная версия обозревателя

var now = new Date();
groups.find({created_at : {$gt:now}}).observe({
    added: function(document){
        console.log('groups observe added value function');
        console.log(document);
    },
    changed:function(new_document, old_document){
        console.log('groups observe changed value function');
    },
    removed:function(document){
        console.log('groups observe removed value function');
    }
});

Здесь была решена та же проблема: поведение cursor.observe({added}) в Meteor

Спасибо @Francesco Pezzella за помощь)

person BagrijRoman    schedule 14.04.2016