javascript - node.js - 发布响应不等待回调完成

标签 javascript node.js mongodb callback

我正在开发 node.js http 服务器。服务器连接到 mongodb。我正在向服务器请求发布请求以从 mongodb 获取文档。但是发布响应并没有等待 mongodb 回调完成。因此,我没有在客户端获得所需的输出。如何处理?

http.createServer(function(request, response) {
    if(request.method == "POST") { 
        var body = '';
        request.on('data', function(chunk) {
            console.log(chunk.toString());
            body += chunk;
        });
        request.on('end', function() {
            MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
                if(err) {
                    console.log("We are not connected");
                }   
                else {
                    var sysInfo = db.collection('sysInfo');
                    var jsonObj = sysInfo.find().toArray();
                    response.writeHead(200, {'Content-Type': 'text/plain'});
                    response.end(jsonObj);
                }
            });
        })
    }
});

最佳答案

toArray是异步的,因此它通过回调提供结果而不是返回结果。

所以那部分应该是:

sysInfo.find().toArray(function(err, docs) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end(docs);
});

关于javascript - node.js - 发布响应不等待回调完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28213019/

相关文章:

node.js - 如 YouTube API Node.js 快速入门中所述,没有选择 "Other"的选项

ruby-on-rails - 如何强制轻便摩托车从延迟运行的 Mongo 辅助副本集成员中读取

javascript - Kendo UI PanelBar 有条件展开

php - 计算商品和数量价格然后发送电子邮件

javascript - 如何使用 jQuery 构建简单的粘性导航?

JavaScript 克隆内部 HTML,然后根据克隆的文本创建新的 div

javascript - 如何安全地执行操作,然后从 .txt 文件中异步插入 250,000 多个单词,而不会导致堆栈溢出?

javascript - 无法在 Jest 中创建自定义 TestEnvironment

node.js - 一个字段在 Mongoose 模式中可以有哪些选项?

php - Mongo 中的多对多关系