流星collection 正确观察变化

Meteor collection observe changes rightly

早上好。 流星 collection 观测有点麻烦。

我试着捕捉瞬间,当我的 collection 发生变化时(添加记录,删除......)

问题是,我的观察者 "added" 函数不仅在我将文档添加到 collection 时被调用,而且在我 运行 流星项目和流星系统添加已经存在时被调用记录到数据库。 (它调用 collection 中的每个现有文档)

请帮我配置我的观察者,我只需要捕捉来自用户的变化,而不是来自开始系统初始化的变化。 也许这是在流星数据库初始化后在服务器端初始化我的观察者的方式?

这是我的代码:

/app/collections/collections.js

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

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

/server/observers/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');
}
});

解决这个问题的方法是:

  • 向文档添加 created_at 字段

  • 通过created_at字段

  • 向观察者添加新文档过滤器

When i add doc to collection:

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

new, worked version of observer

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}) behavior in Meteor

感谢@Francesco Pezzella 的帮助)