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