我试图遍历MongoDB游标对象并从集合中返回所有记录,然后使用Node outout中的response方法返回浏览器。
我遇到的问题似乎没有得到回应。
我已经尝试将response.end()放在循环中,但它不会遍历结果。
我在不同的地方尝试过response.end()。这是代码
db.open(function(err, db) {
if(!err) {
console.log("Nodelistr is connected to MongoDB\n");
response.writeHead(200);
db.collection('todo', function(err, collection){
collection.find(function(err, cursor) {
cursor.each(function(err, doc) {
for(docs in doc){
if(docs == "_id"){
}else{
var test = docs + " : " + doc[docs];
}
}
data = data.toString("utf8").replace("{{TEST}}", test);
response.write(data);
//console.dir(doc);
})
response.end();
});
});
};
});
答案 0 :(得分:0)
我无法弄清楚你在尝试使用未初始化的data
变量以及迭代它们时的文档,但一般的问题是你需要等待调用{{1}直到你到达光标的末尾。这表示response.end();
在doc
回调中为cursor.each
。
代码的中间部分应遵循以下一般方法:
db.collection('todo', function(err, collection){
collection.find(function(err, cursor) {
cursor.each(function(err, doc) {
if (doc) {
... // initialize data from doc
response.write(data);
} else {
// doc is null, so the cursor is exhausted
response.end();
}
})
});
});