在服务器端,我试图通过一个回调函数更新Mongo集合上的字段,该函数作为参数传递给Meteor上的setTimeout
。我们的想法是创建一个每N秒/分钟运行一次的函数来清理数据库;
它一直在说" Meteor编码必须始终在Fiber"
中运行这就是我得到的
function MyClass(){ //foo }
MyClass.prototype.interval = function(time,callback){
var interval = function(time,callback){
this.timer = setTimeout(function(){
callback();
interval(time,callback);
},time);
};
interval(time,callback);
}
if (Meteor.isServer) {
Meteor.startup(function (){
new MyClass().interval(1000,function(){
//foo
mycol.update({field:{$lt:one_hour_ago}},{$set:{boolean:false}});
});
});
}
它抛出"流星代码必须始终在光纤内运行。尝试使用Meteor.bindEnvironment包装传递给非Meteor库的回调。"
我读到一些人谈论将回调绑定到Fiber,但我的应用程序说光纤没有定义。
我该如何使这项工作?在我的情况下如何使用bindEnvironment?
答案 0 :(得分:3)
您必须改为使用Meteor.setInterval
和Meteor.setTimeout
。