【发布时间】:2020-02-11 20:47:20
【问题描述】:
很抱歉,我知道已经有一些帖子处理 NodeJS 中的嵌套承诺问题,但我仍然想不出这个。
我正在使用 Express 和 Mongoose,我想找到一个对象 ID,然后保存一个对象,然后更新另一个对象,但我不明白我应该如何做得比这更好,因为这些是依赖的承诺:
// Get Client object ID from email
Client.findOne({ email: req.body.clientEmail })
.exec()
.then((client) => {
// Then add Client ID to program and save
const program = new Program(req.body);
program.Client = client._id;
program.save()
// Finally add the program to the existing coach user
.then((program) => {
Coach.updateOne({ _id: req.session.userId }, { $push: { programs: program._id } },
function (err, coachUpdated) {
if (err) return handleError(err);
console.log(coachUpdated);
})
})
.then(() => { res.send('New program added!'); });
})
提前致谢
【问题讨论】:
-
第二个 Promise 不是将
.then嵌套在另一个.then中,而是return,并在下一个 outer.then中使用它 -
了解异步和等待
-
尝试使用 async/await 代替 Promises,它将帮助您正确获取数据
标签: node.js express mongoose promise nested