在node.js服务器中,使用mongodb本机驱动程序,我想从游标中检索记录,然后将它们输出为JSON。我有这个(简化)
var ans = {ids: []};
cursor.each(function(err, doc) {
if (doc) {
ans.ids.push(doc.tag);
}
});
cursor.count(function(err, result) {
ans.count = result;
res.send(JSON.stringify(ans));
});
,结果类似于{ids:[], count: 3}
。换句话说,查询出现以在不返回任何记录的情况下运行。我认为这是因为数据已经在cursor.each
回调运行之前发送过。如何重新构造它以确保在迭代后发送?
答案 0 :(得分:1)
我找到了答案。 cursor.each的示例说“如果该项为null,则光标已用尽/空并关闭”,因此:(省略错误处理)
var ans = {ids: []};
cursor.each(function(err, doc) {
if (doc) {
ans.ids.push(doc.tag);
}
else {
cursor.count(function(err, result) {
ans.count = result;
res.send(JSON.stringify(ans));
});
}
});