0

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

4

1 回答 1

0

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

于 2012-10-03T16:02:02.930 回答