Node.js&猫鼬:异步功能逻辑

时间:2012-10-03 10:54:11

标签: node.js mongodb asynchronous mongoose

我正在为项目编写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的非阻塞逻辑?

1 个答案:

答案 0 :(得分:0)

问题的实质是在哪里放置回调代码?推荐的模式是使用docs中描述的那种模式。这包含了回调中的任何文档逻辑,以避免阻塞操作。