执行forEach循环后如何将数组作为输出返回?

问题描述 投票:-1回答:1

我有一个数组,其中项目_id存储在user集合中。我最初是在获取该数组,然后尝试检索与(如果存储在用户集合中)_id(存储在用户集合中)相对应的数据。检索到的数据被推到数组上,该数组作为输出返回。但是我做不到。返回一个空数组。 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(存储在用户集合中)相对应的数据...

reactjs mongodb mongoose
1个回答
0
投票
问题是dbo.collection("projects").findOne异步并返回了一个Promise。forEach循环运行并为每个元素生成这些promise,但不等待其执行。当循环结束并返回空数组时,承诺将无法解决。您可以等待promise执行,然后再返回数组:
© www.soinside.com 2019 - 2024. All rights reserved.