Node JS等待启动数据库初始化等的最佳方式

Adi*_*ady 1 node.js

我知道Node是非阻塞等但我不知道如何在不阻塞的情况下解决这个问题.

你启动服务器

node app.js
Run Code Online (Sandbox Code Playgroud)

但是在处理传入的请求之前,您需要从数据库或mongodb进行一些配置等,因此在启动处理请求之前,需要等待db响应返回.

我可以使用灵活但是你必须将路径等所有包装在第二个执行块中,这是令人讨厌的.

什么是最好的方式?

sgr*_*454 6

Node确实是非阻塞的,但这并不意味着您需要立即开始接受请求!看一下经典的HTTP服务器示例:

var http = require('http');

var server = http.createServer(function (req, res) {
 // ... logic to handle requests ...
});

server.listen(8000);
Run Code Online (Sandbox Code Playgroud)

您可以在致电之前做任何您喜欢的事情server.listen,包括您需要的任何配置任务.假设这些任务是异步的,您可以在回调中启动服务器:

var http = require('http');


var server = http.createServer(function (req, res) {
 // ... logic to handle requests ...
});


// Set up your mongo DB and grab a collection, and then...
myMongoCollection.find().toArray(function(err, results) {

   // Do something with results here...

   // Then start the server
   server.listen(8000);

});
Run Code Online (Sandbox Code Playgroud)