node.js - post响应不等待回调完成

时间:2015-01-29 11:00:27

标签: 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);
                }
            });
        })
    }
});

1 个答案:

答案 0 :(得分:2)

toArray是异步的,所以它通过回调提供结果而不是返回它们。

那部分应该是:

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