NodeJS/SailsJS应用程序数据库块



了解NodeJS是一个单线程进程,但如果我必须运行一个长进程的数据库进程,我需要启动一个web工作程序吗?例如,在一个sails JS应用程序中,我可以调用数据库来创建记录,但如果数据库调用需要一些时间才能完成,它将阻止其他用户访问数据库。

下面是我尝试的示例代码

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
            });

在第一次请求时,我几乎立刻看到了回报。但是,如果我再次请求它,我将需要等待输入所有记录,然后它将再次返回视图。

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

Node.js具有非阻塞异步IO。

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

还可以开始使用Promises来帮助您避免写阻塞IO。

最新更新