这是我代码:
const query = await Users.findOne({_id: userId}, 'groups');
const arrayOfGroups = [];
//query.groups is an array of strings that contains id´s
await Promise.all([query.groups.forEach(async function (groupId){
const atributtesOfGroup = await Group.findById(groupId);
const {grade, group, career} = atributtesOfGroup;
arrayOfGroups.push(grade + '°' + group + '\n' + career);
})]);
我尝试通过id的数组(query.groups)来查找文档,并将这些文档放入数组“arrayOfGroups”中
我也尝试了一个查询与$or,但它没有工作
一些想法?我只需要一个数组,看起来像这样[等级+ '°' +组+ '\n' +职业,等级+ '°' +组+ '\n' +职业,等级+ '°' +组+ '\n' +职业,...]
2条答案
按热度按时间yzxexxkh1#
你不必在循环中调用异步函数,只需使用$in操作符就可以得到预期的输出。
dl5txlt92#
一个
forEach
不返回任何东西,你需要使用map
-函数,它返回一个promise数组,所以你不需要把[...]
作为参数添加到你的Promise.all
中。您也可以直接在内部函数中返回文本字符串,而无需预先定义
arrayOfGroups
。