我从存储在mongodb数据库中的数组字段中获取几个id,并将这些值作为数组存储到某个常量变量中。现在我使用map函数遍历数组,并基于这些id在map函数中执行一些查询操作,当我得到结果时,我将其存储到新数组中,然后我尝试将新数组返回给用户。
下面是我的代码:
const data = await userSchema.findOne({_id:objectId,active:true});
const hubIdArray = data.hubs; //Here storing all the ids getting from db array field
const hubs = []; //Storing values here after performing query opseration inside map function
hubIdArray.map(async (hubId) => {
const hub = await hub_schema.findOne({id:hubId});
hubs.push(hub);
console.log(hubs); // Here I am getting the hubs array.
})
console.log('Out',hubs); // But here its returning an empty array
return res.send(hubs);
为什么我在map函数里面得到了数组,而在map函数外面没有得到,即使我在map函数外面声明了一个空的hubs数组。有人告诉我。
1条答案
按热度按时间jc3wubiy1#
你的
map
函数是async
,所以基本上你的console.log('Out',hubs)
在你的检索完成之前就运行了。解决这个问题最简单的方法是把map
改为标准的for
循环。