0

在 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回调运行之前已经发送了数据。我如何重新构建它以确保在迭代之后发送?

4

1 回答 1

1

我找到了答案。cursor.each的示例说“如果项目为空,则游标已用尽/为空并关闭”,因此:(省略错误处理)

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));
  });
 }
});
于 2012-11-23T12:16:53.603 回答