【发布时间】:2021-04-29 17:08:52
【问题描述】:
我的快速路由器正在调用这个基本函数。
export const createThing = async(req,res,next) => {
const {body} = req;
const thing = await Thing.create(body).catch(err=>next(err));
console.log('should ignore me on error')
res.send(tran);
};
我有意按照Thing 模型的要求发送一个包含不完整字段的正文,它在 catch 块中触发了一个错误,这反过来又触发了我现有的所有错误中间件,但是,我希望它退出函数,因为我在捕获时返回next(err),但它仍然继续函数的其余部分。
我尝试删除const thing =,以便我没有将查询/捕获的结果返回到变量,而是将其作为await Thing.create(...).catch(...) 简单地执行,而这解决了我的错误报告中的其他问题,我在这里没有提及,它仍然是 console.logging '应该忽略我的错误'。
所以我的问题是为什么函数在捕获错误时不退出?我应该以某种方式手动执行此操作吗?我不只是调用 next(err) 我在 catch 块中返回它,而且我希望它不会继续执行该函数,然后会出现其他错误,因为我使用 res.send() 设置标题,我想要它出错时退出函数。
【问题讨论】:
标签: node.js express mongoose error-handling