我正在使用nestJS项目,并尝试返回插入对象的ID,以便以后可以将其用于填充其他对象中的引用。
try {
await this.projectModel.insertMany(newProjects, (err, addedProjects) => {
const addedProjectsIds = addedProjects.map(ap => {
return ap._id;
});
ids = ids.concat(addedProjectsIds);
console.log('-------1--------');
console.log(ids);
});
} catch(err) {
isSuccessful = false;
errorMessage = err.message;
}
console.log('---------2--------');
console.log(ids);
return { success: isSuccessful, message: errorMessage, result: ids };
我将始终收到一个添加到引用ID中的空数组,经过一些分析确定问题出在一个块中,这似乎忽略了async / await语法。在下面的示例中,我首先在控制台中得到--- 2 ---,然后是--- 1 ---,这意味着这些ID将在被insertMany回调填充之前返回。
为什么在mongoose方法上使用了wait,为什么会发生这种情况?我该如何缓解呢?
答案 0 :(得分:1)
await
将不起作用。据我所知,insertMany
returns a Promise-await
可以使用。试试这样的东西:
const addedProjects = await this.projectModel.insertMany(newProjects);
const addedProjectsIds = addedProjects.map(ap => {
return ap._id;
});
ids = ids.concat(addedProjectsIds);
console.log('-------1--------');
console.log(ids);