Node JS + Mongoose:将文档保存在while()中

时间:2014-06-08 15:25:25

标签: node.js mongodb mongoose

我正在玩Node和Mongoose,我对以下问题感到好奇:

我正在尝试从循环/间隔内将文档保存到mongo。

以下工作正常:

setInterval(function(){

    var doc = new myModel({ name: 'test' });

    doc.save(function (err, doc){
        if (err) return console.error(err);
        doc.speak();
    });

}, 1);

以下不起作用:

while(true){

    var doc = new myModel({ name: 'test' });

    doc.save(function (err, doc){
        if (err) return console.error(err);
        doc.speak();
    });

}

这种行为有什么解释?保存回调永远不会在方案2中触发

此外,有人可以评论建立“长跑工人”的最佳做法吗?我感兴趣的是使用node构建后台工作程序来处理数据队列。是一段时间()一个坏主意?的setInterval()?另外,我计划使用forever模块来保持进程活着

谢谢!

1 个答案:

答案 0 :(得分:2)

Node.js是单线程的,因此while(true)将完全占用单个线程,永远不会让doc.save回调有机会运行。

你问题的第二部分过于宽泛,你应该一次只问一个问题。

相关问题