确定collection.forEach是否已完成

时间:2016-06-12 23:29:26

标签: javascript node.js mongodb

我正在尝试打印集合中的所有数据,一些研究表明最好的方法是

DB.collection('users').find({}).each( (err, i) => {
   console.log(i);
});

哪个好,但是在这个循环之后运行一个console.log会事先打印出来,并且我需要在返回所有项目后运行一些东西。

如果我可以一次检索所有文档,那将解决我的问题,否则我需要确定此循环何时完成,然后运行一些代码来处理结果。

1 个答案:

答案 0 :(得分:1)

由于MongoDB API没有直接映射到预期的Node概念,所以需要花点时间才能弄清楚。

无论如何,MongoDB的find方法返回cursor object。事实上,这个游标对象实现了each(以及toArray等其他有用的方法。)

但是,callback需要两个参数,而不只是一个。 [编辑:问题在回调中只有一个参数,OP的转录错误]

DB.collection('users').find({}).each( (error, i) => {
   console.log(i);
});

它的Node约定,回调的第一个参数是一个错误对象,用于错误处理目的。接下来的参数是您的实际数据 - 在本例中是来自Mongo的记录。