我正在为一个项目编写 API,最近我们将技术堆栈转移到了 Node.js 和 MongoDB。但是我无法解决与 Node 和 Mongo 相关的一些方面。
我通过查看臭名昭著的 Node Beginner 教程开始编写 Node 代码,其中高度提到遵循非阻塞逻辑。也就是说,如果我理解正确,不是等待一个函数完成,而是继续前进,然后“神奇地”得到你继续前进的那个函数的结果。
但是有一件事让我感到困惑,如果非阻塞是Node的本质,我在查询数据库时是否应该遵循它,因为我必须保证并返回连接结果为成功或错误. 我的代码会更好地解释 tl;dr's; (顺便说一句,我使用Mongoose作为 mongoDB ODM。
db.on('error', function(err){
if(err)
console.log("There is an error");
response.write("Terrible Error!");
response.end();
});
我已经写了在'db.on()'错误代码之后数据库连接成功时该怎么做,但是经过第二次思考我认为最好写在'function(err)'中,因为发生错误它会直接取消操作,结束响应。但这是否违背了 Node.js 的非阻塞逻辑?