javascript - 使用带有猫鼬函数的 Promise
问题描述
我是新来的承诺。我正在尝试将它们与猫鼬查询功能一起使用,例如find()
and 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');
});
});
解决方案
您的 Routes 似乎不依赖于按顺序获取模型。所以你可以用更好的方式写这个,如下所示:
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');
}
)};
推荐阅读
- c - X509_V_FLAG_PARTIAL_CHAIN 的 cURL 简单选项
- algorithm - 使用附加数据结构进行线性排序(O(1) 找到集合的中位数,O(1) 用于添加元素)
- python - 无法连接到服务器
- android - 未知故障:java.lang.UnsatisfiedLinkError:找不到 java.lang.String 的实现
- shell - 如何从 fasta 文件中删除小重叠群?
- excel - 如果在列上找到字符串,则删除一行
- neo4j - Neo4J OGM 映射自定义对象
- svn - SVN 提交的奇怪问题(无法提交带有 *.conf* 扩展名的文件)
- android - React Native:无法通知项目评估侦听器。> JAVA_LETTER_OR_DIGIT
- powershell - Powershell:在多次设置内容和获取内容操作期间对文件进行独占锁定