2013-05-15 33 views
1

查询收藏我的model.js这样定义的集合:使用的setTimeout在流星

People = new Meteor.Collection("people"); 

下面是main.js代码:

function test2(){ 
    console.log(JSON.stringify(People.find().fetch())); 
    setTimeout(test2,5000) 
} 
if (Meteor.isServer) { 
    if(People.find().fetch().length === 0){ 
    var tom = {name:"Tom",age:18}; 
    People.insert(tom); 
    } 

    Meteor.startup(function() { 
    test2(); 
    }); 
} 

下面是我得到的错误:

enter image description here

我想流星的收集AUT执行一些CRUD按设定的时间间隔进行。所以我使用setTimeOut,但它似乎很难。

有关我在做什么错的任何想法?

+0

而我尝试使用Noe.js的Events类,但错误是相同的:

events = __meteor_bootstrap__.require('events'); \t var emitter = new events.EventEmitter(); \t emitter.on('MySyncEvent', function() { \t \t test(); \t }); \t setInterval(function(){ \t \t emitter.emit('MySyncEvent') \t },10000);

回答

5

使用Meteor.setTimeout代替:

Meteor.setTimeout(test2,5000) 

在服务器流星代码使用的纤维,让你写同步代码,JavaScript的超时让其回调火在纤维太运行,特别是如果它包含流星代码。