【发布时间】:2020-05-31 10:58:50
【问题描述】:
我在同一个函数中使用 2 个中间件时遇到了一些问题,我已经尝试搜索所有互联网但没有找到有用的解决方案。
验证文件
module.exports = {
create: async (req, res, next) => {
await celebrate(options.create)(req, res, next);
return res.status(500).json({ message: 'middleware 2'});
},
}
路由文件
routes.post('/user', UserValidator.Create ,UserController.create);
Celebre 库过滤一些基本的验证,如字符串长度、空值等。Celeb() 函数返回另一个带有 (req, res, next) 参数的函数。
当Celebre返回验证错误时,它仍然继续执行代码,所以它尝试执行下一个返回,我得到一个错误,因为返回已经发送。
当在路由中使用单独的中间件时,它可以正常工作:
routes.post('/user', celebrate(...), middleware2 ,UserController.create);
我也尝试过这种方式,但发生了同样的事情,但现在没有错误,只是返回了 middleware2 结果。
module.exports = {
create: async (req, res, next) => {
await celebrate(options.create)(req, res, () => {
return res.status(500).json({ message: 'middleware 2'});
});
},
有没有办法解决这个问题?
【问题讨论】:
标签: node.js middleware