我有一个数组,其中项目_id存储在user集合中。我最初是在获取该数组,然后尝试检索与var projectInfo= new Array();
users.post('/retrieveProjects', function(user, res, next) {
MongoClient.connect(url, function(err,db) {
if (err) throw err;
var dbo = db.db("EMWorks");
dbo.collection("users").findOne({_id:user.body.userid})
.then(response => {
if(response)
{
console.log(response);
(response.project).forEach(element => {
dbo.collection("projects").findOne({_id:element})
.then(respo => {
console.log(respo);
projectInfo.push(respo);
});
console.log(projectInfo) ;
});
}else{
console.log("No Projects created yet...!");
}
});
});
});
Output of the code
我有一个数组,其中项目_id存储在用户集合中。我最初是在获取该数组,然后尝试检索与_id(存储在用户集合中)相对应的数据...
dbo.collection("projects").findOne
异步并返回了一个Promise。forEach循环运行并为每个元素生成这些promise,但不等待其执行。当循环结束并返回空数组时,承诺将无法解决。您可以等待promise执行,然后再返回数组: