确定是否collection.forEach完成

我试图从一个集合中打印所有的数据,一些研究显示了最好的方法

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

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

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

由于MongoDB API直接不能直接映射到期望的Node概念上,所以花了一些时间来弄清楚。

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

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

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

出于error handling的目的,callback的第一个参数是一个错误对象,这是Node约定。 下一个参数是您的实际数据 – 在这种情况下是来自Mongo的logging。