【发布时间】:2015-01-29 11:00:27
【问题描述】:
我正在开发 node.js http 服务器。服务器连接到 mongodb。我正在向服务器请求发布请求以从 mongodb 获取文档。但是 post 响应不等待 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);
}
});
})
}
});
【问题讨论】:
-
您是否收到错误消息?我问是因为猫鼬
connect方法回调只收到一个error参数。所以,当你执行db.collection('sysInfo')时,你应该得到一个错误(db isundefined)。 -
没有。我没有收到任何错误。但在代码到达 response.end(jsonObj) 之前,客户端会收到以当前 html 页面为内容的 post 响应。
-
知道了。 @JohnnyHK 提供的答案是完美的。我只是对您问题中的
mongoose标签感到困惑,所以我认为您正试图通过mongoose直接连接。但后来我意识到您使用的是 mongodb 原生驱动程序。
标签: javascript node.js mongodb callback