mongodb 将数组值添加到数组后无法返回数组值

afdcj2ne  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(188)

我从存储在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数组。有人告诉我。

jc3wubiy

jc3wubiy1#

你的map函数是async,所以基本上你的console.log('Out',hubs)在你的检索完成之前就运行了。解决这个问题最简单的方法是把map改为标准的for循环。

const hubs = [];
for (let i = 0; i < hubIdArray.length; i++) {
    const hub = await hub_schema.findOne({id:hubIdArray[i]});
    hubs.push(hub);
    console.log(hubs); 
}
console.log('Out',hubs); 
return res.send(hubs);

相关问题