我要执行mongodb请求,等到它结束并返回结果。
问题是mongo请求之后的指令似乎要在请求结束甚至开始之前执行。
users_opposite = collection.find( {"mode" : opposite} ).forEach(function (usersOpposite) {
users_closed.push(usersOpposite);
console.log(users_closed.length);
});
console.log(users_closed.length);
console.log("test");
结果我得到了这个
0 测试 1个 2 3 4
我如何对以下指令说,直到foreach完成?
感谢您的帮助。
答案 0 :(得分:1)
不是forEach
,而是需要完成collection.find
,然后您可以在回调中获得结果,例如:
collection.find({ mode: opposite }, function(err, usersOpposite) {
console.log(usersOpposite);
});
答案 1 :(得分:1)
您必须等待collection.find()的执行
// giving a context for the code
async function foo() {
// something before
users_opposite = await collection.find( {"mode" : opposite} )
.forEach(function (usersOpposite) {
users_closed.push(usersOpposite);
console.log(users_closed.length);
});
console.log(users_closed.length);
console.log("test");
}
如Grégory在评论中所建议,此处更多信息How do I return the response from an asynchronous call?