Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 观测变化';增加了';回调所有项,即使是数据库中已经存在的项_Javascript_Meteor - Fatal编程技术网

Javascript 观测变化';增加了';回调所有项,即使是数据库中已经存在的项

Javascript 观测变化';增加了';回调所有项,即使是数据库中已经存在的项,javascript,meteor,Javascript,Meteor,我有页面上的项目列表,我想为集合中的detect insert添加侦听器 下面的代码在客户端 但若集合中已经存在项,则加载后页面将对所有项启动回调。为什么要为集合中已经存在的项触发“添加”回调,以及如何只检测真正的新插入?有两种解决方案。关于第一个问题,请看这里: 第二个是: var isInitial=true Messages.find().observeChanges({ 新增:函数(){ 如果(!i初始){ console.log('messageadded'); } } }); isI

我有页面上的项目列表,我想为集合中的detect insert添加侦听器

下面的代码在客户端


但若集合中已经存在项,则加载后页面将对所有项启动回调。为什么要为集合中已经存在的项触发“添加”回调,以及如何只检测真正的新插入?

有两种解决方案。关于第一个问题,请看这里:

第二个是:

var isInitial=true
Messages.find().observeChanges({
新增:函数(){
如果(!i初始){
console.log('messageadded');
}
}
});
isInitial=false

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

您可以尝试使用collections挂钩,它将完全满足您的需要:


不幸的是,此软件包尚未更新,无法与Meteor 0.9及更高版本一起使用。

暂时忽略添加的
机制,您试图实现什么?例如,您是否希望显示自特定模板被拒绝以来的所有新消息?我问这个问题是因为可能有一种比使用
observeChanges
更简单的方法。第二种方法很好!我删除了我的答案,因为它:-/(虽然我在答案中提供的文档链接实际上使用了您的解决方案(虽然是服务器端),但我太傻了,看不见它:()
Messages.find().observeChanges({
    added: function(){
        console.log('Message added');
    }
});