【发布时间】:2021-08-01 09:50:18
【问题描述】:
很确定我可以使用 async/await 来做到这一点,但我想了解如何在没有的情况下实现此逻辑。
工作流程:
- 在数据库中找工作
- 如果job存在,找Person,如果不存在,给前端发响应
- 然后做人的逻辑
代码:
Job.findByPk(jobId)
.then(job => {
if(job) return Person.findOne(...)
else res.status(404).json(...)
})
.then(person => {
if(person)
// Do person logic here
})
.catch(err => ...);
问题是这个逻辑显然行不通。如果找不到工作或找不到人,则第二个.then() 块中的person 参数可能未定义。
所以解决方案是在第一个 .then() 块中执行此操作:
.then(job => {
if(job) // store the job locally
else res.status(404).json(...)
return Person.findOne(...)
})
但这意味着无论是否找到工作都会搜索数据库,而不是以找到工作为条件
如何以更有意义的方式构建它?
谢谢
【问题讨论】:
-
尼克,你不应该在stackoverflow上回答你的问题。这里的问题仅供提问。如果您想显示自己的答案,实际上可以在答案中显示。
-
对不起,马上改!
标签: javascript node.js express promise