Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定collection.forEach是否已完成_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 确定collection.forEach是否已完成

Javascript 确定collection.forEach是否已完成,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试打印收集的所有数据,一些研究表明最好的方法是 DB.collection('users').find({}).each( (err, i) => { console.log(i); }); 这很好,但是在这个循环之后运行console.log会提前打印,我需要在返回所有项目之后运行一些东西 如果我可以一次检索所有文档,这将解决我的问题,否则我需要确定这个循环何时完成,然后运行一些代码来处理结果。这需要一些困惑才能弄清楚,因为MongoDB API并没有直接映射到预期的节点

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

DB.collection('users').find({}).each( (err, i) => {
   console.log(i);
});
这很好,但是在这个循环之后运行console.log会提前打印,我需要在返回所有项目之后运行一些东西


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

这需要一些困惑才能弄清楚,因为MongoDB API并没有直接映射到预期的节点概念上

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

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


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

是的,我实际上正在这样做,idk为什么我没有在我给出的示例中这样做,但这不是我遇到的问题,我遇到的问题是在返回所有结果后运行某些东西。我可以退货。那么可以用toArray代替每个吗?它接受一个带有错误的回调和一个返回记录的数组,而不是一条一条地返回每条记录。是的!那正是我想要的,谢谢!
DB.collection('users').find({}).each( (error, i) => {
   console.log(i);
});