观察到的变化'添加'回调所有项,即使是数据库中已经存在的项

ObserveChanges 'added' callback on all items, even that already exist in db

本文关键字:即使是 存在 数据库 变化 添加 回调 观察      更新时间:2023-09-26

我在页面上有项目列表,我想在集合中添加用于检测插入的侦听器。

下面的代码在客户端

Messages.find().observeChanges({
    added: function(){
        console.log('Message added');
    }
});

但若集合中已经存在项,则加载后页面将触发所有项的回调。为什么为集合中已经存在的项触发回调"added",以及如何仅检测真正新的插入?

有两种解决方案。对于第一个,请查看此处:https://github.com/oortcloud/unofficial-meteor-faq#why-does-observe-fore-a-bunch-added-events-for-existing-documents-

第二个是:

var isInitial = true
Messages.find().observeChanges({
    added: function(){
        if(!isInitial){
            console.log('Message added');
        }
    }
});
isInitial = false

这是因为对observeChanges的调用将在返回之前为Minimongo中已经存在的文档触发添加的回调(并且isInitial将设置为false)。

您可以尝试使用集合挂钩,这将完全符合您的要求:

https://atmospherejs.com/mrt/collection-hooks

不幸的是,这个软件包还没有更新到Meteor 0.9及更高版本。