退出当前的中间件链而不抛出错误

Exiting the current chain of middleware without throwing error

本文关键字:出错 错误 中间件 退出      更新时间:2023-09-26

我正在寻找一种方法来退出中间件链而不调用next()

下面是一个例子。这是有效的,但我必须检查req.filter每次确保它设置为假。express是否有任何方式退出当前的中间件链(移动到下一条路由)而不抛出错误(next(new Error("will exit and move to error handler"))?

我真正想要的是一个nextRoute()处理程序,它将退出此路由的中间件堆栈并移动到下一个。

function queryExists(query){
  return function(req, res, next){
    if(!dotty.exists(req, "query."+query)) req.filter = true
    return next()
  }
}
app.get("/", queryExists("foo"), queryExists("bar"), function(req, res, next){
  if(req.filter) return next()
  return res.send(req.query.foo + " | " + req.query.bar)
})
app.get("/", function(req, res, next){
  return res.send("hi")
})

我希望有一些框架或库能够以任何标准的方式解决这个问题。

如果你需要从路由器中跳过其余的中间件中间件栈,调用next('route')将控件传递给接下来的路线。注意:next('route')只在中间件加载时起作用使用app.VERB()或router.VERB().

return next('route')
相关文章: