我是新来的诺言。而且我正在尝试将它们与像find()
和findById()
这样的猫鼬查询函数一起使用。一切似乎都正常,但是我不确定这是否是链接then
的正确方法。使用Promise的目的是消除回调地狱,但是我链接then
的方式看起来与回调非常相似。有没有更好的方法来编写此路线?
router.get('/homehr/employees/new', middleware.isLoggedInAsHR, (req, res) => {
Department.find({})
.exec()
.then((allDepartments) => {
Employee.findById(req.user.employee.id)
.exec()
.then((foundEmployee) => {
res.render('hr/employees/new', {
departments: allDepartments,
employee: foundEmployee,
blogs: allBlogs
});
});
})
.catch((err) => {
console.log(err);
req.flash('error', err.message);
return res.redirect('back');
});
});
答案 0 :(得分:1)
您的路线似乎不具有依序获取模型的依赖性。因此,您可以按照以下更好的方式编写此代码:
router.get('/homehr/employees/new', middleware.isLoggedInAsHR, async (req, res) => {
try{
const allDepartments = await Department.find({});
const foundEmployee = await Employee.findById(req.user.employee.id);
res.render('hr/employees/new', {
departments: allDepartments,
employee: foundEmployee,
blogs: allBlogs
});
}catch(err){
console.log(err);
req.flash('error', err.message);
return res.redirect('back');
}
)};