我在Meteor.methods定义中有这段代码:
update_field: function(collection,document_id,field,value) {
obj = {};
obj[field] = value;
console.log(obj);
if (collection == 'clients') {
var Collection = Clients;
} else if(collection = 'sites') {
var Collection = Sites;
}
Collection.update(
{
_id: document_id
}, {
$set: obj
}, function(error,id) {
console.log(error,id);
return(error,id);
}
);
}
从多个客户端帮助程序事件调用此方法,并根据需要更新字段。但只要它运行一次,它就永远不会停止运行。有时即使所有Meteor.call('update_field')
被注释掉,它也会无限运行。我尝试了一个'调用者'参数,并将其添加到所有可能的调用中,以找出为什么它一直被调用无效。任何想法为什么这是循环?
编辑:运行2,000 /分钟
Edit2:这是通过以下两种方式之一调用的:在适当字段中的键盘代码== 13(输入)或字段模糊。但是,当这些调用被注释掉时,问题仍然存在。
答案 0 :(得分:1)
特别是你的第二条评论让我担心:
但是,即使这些电话被注释掉,问题仍然存在。
然后谁在呼唤它?您描述的行为指向执行该方法的某个帮助程序。该方法更改了一些数据,这些数据重新执行了帮助程序(反应性),最后我们得到了一个经典的无限循环。
检查整个源代码以获取对此方法的引用:
$ grep -r "update_field" *
也许您以某种方式设置变量然后使用变量来调用方法。另外:您是否在Meteor.methods({ ... })
块内声明了该方法?
答案 1 :(得分:0)
我认为问题在于我的一种方法模糊了输入字段但是阻止了破坏。然后调用模糊处理程序并从那里引起循环。这是我的第一个Meteor项目,因此我将这个问题归结为不太了解系统。我仍然觉得奇怪的是,当呼叫者被注释掉时,这个方法被调用了,但我会在另一天看到那个。