NodeJS / SailsJS应用程序数据库块

了解NodeJS是单线程进程,但是如果我必须运行一个长进程数据库进程,我是否需要启动一个web worker来做到这一点? 例如,在一个sails的JS应用程序中,我可以调用数据库来创buildlogging,但是如果数据库调用需要时间完成,它将阻止其他用户访问数据库。

以下是我尝试的示例代码

var test = function(cb) { for(i=0;i<10000;i++) { Company.create({companyName:'Walter Jr'+i}).exec(cb); } } test(function(err,result){ }); console.log("return to client"); return res.view('cargo/view',{ model:result }); 

根据第一个要求,我几乎可以看到回报。 但是如果我再次请求它,我将需要等待所有logging被input之前,它会再次返回给我的观点。

这种阻塞问题的常见做法是什么?

Node.js具有非阻塞asynchronousIO。

阅读下面的文章,它将帮助你重组你的代码http://hueniverse.com/2011/06/29/the-style-of-non-blocking/

也开始使用Promise来帮助你避免写入阻塞IO。