流星收集正确观察变化 [英] Meteor collection observe changes rightly

查看:50
本文介绍了流星收集正确观察变化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早上好.流星收集观测有点麻烦.

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

问题是,我的观察者添加"函数不仅在我将文档添加到集合时被调用,而且在我运行流星项目和流星系统将现有记录添加到数据库时调用.(它要求从集合中获取每个现有文档)

请帮我配置我的观察者,我只需要捕获用户的更改,而不是启动系统初始化.也许是流星数据库初始化后在服务器端初始化我的观察者的方式?

这是我的代码:

<块引用>

/app/collections/collections.js

groups = new Mongo.Collection('groups');组.允许({插入:函数(){返回真;},更新:功能(){返回真;},删除:功能(){返回真;}});

<块引用>

/server/observers/groups_observer.js

groups.find().observe({添加:功能(文档){console.log('分组观察增值函数');控制台日志(文件);},更改:功能(新文档,旧文档){console.log('组观察值变化函数');},删除:功能(文档){console.log('组观察删除值函数');}});

解决方案

解决这个问题的方法是:

  • 将 created_at 字段添加到文档

  • 通过 created_at 字段向观察者添加新的文档过滤器

<块引用>

当我将文档添加到集合时:

groups.insert({created_by:Meteor.userId(),created_at: 新日期(),......});

<块引用>

新的观察者工作版本

var now = new Date();groups.find({created_at : {$gt:now}}).observe({添加:功能(文档){console.log('分组观察增值函数');控制台日志(文件);},更改:功能(新文档,旧文档){console.log('组观察值变化函数');},删除:功能(文档){console.log('组观察删除值函数');}});

这里解决了同样的问题:流星中的cursor.observe({ added})行为

感谢@Francesco Pezzella 的帮助)

Good morning. Have a little troubles with meteor collection observing.

I try to catch moments, when my collection is changed (added recor, removed ...)

The problem is, my observer "added" function is called not only when i add document to collection, but it calls when i run meteor project and meteor system add already existing records to database. (it calls for each exisiting document from collection)

Please help me to configure my observer, i need to catch only changes from user, but not from starting system initialization. Maybe it's the way init my observer on the server side after meteor database initialization?

Here is my code:

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

解决方案

The way to resolve this problem is:

  • add created_at field to documents

  • add new documents filter to observer by created_at field

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

Here was resolved the same problem: cursor.observe({added}) behavior in Meteor

Thanks @Francesco Pezzella for help)

这篇关于流星收集正确观察变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆