【发布时间】:2021-05-25 16:06:00
【问题描述】:
try {
const skills = []
req.body.skills.forEach(async (element) => {
const skill = await Skill.findOne({name : element.skill})
if (!skill) {
return res.status(400).send('Skill : '+element.skill+' is not present')
}
skills.push(
{
skill : skill._id,
skillname : skill.name
}
)
})
if (!await User.findOne(req.params)) {
return res.status(400).send('The username : '+req.params.username+' doesnot exist')
}
console.log(skills);
res.status(200).send(req.body)
} catch (error) {
console.log(error);
}
在此我得到错误,当技能在数据库中不存在时,如:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:526:11)
at ServerResponse.header (D:\Teamin\teaminbackend\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (D:\Teamin\teaminbackend\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (D:\Teamin\teaminbackend\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (D:\Teamin\teaminbackend\node_modules\express\lib\response.js:158:21)
at D:\Teamin\teaminbackend\router\user.js:48:25
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
代码:'ERR_HTTP_HEADERS_SENT' }
所以我想知道当我在我创建的函数中遇到错误时如何退出整个 try 块(return 语句只中断我创建的函数而不是整个 try 块,因为它试图运行代码
res.send(req.body)
导致错误
【问题讨论】:
标签: javascript node.js mongodb return try-catch