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

时间:2015-07-09 02:32:21

标签: javascript node.js express middleware

我正在寻找一种方法来退出一系列中间件,而无需调用next()

以下是一个例子。这有效但我必须每次检查req.filter以确保它设置为false。 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")
})

我喜欢一些以任何标准方式解决这个问题的框架或库。

1 个答案:

答案 0 :(得分:1)

  

如果您需要从路由器中跳过其余的中间件   中间件堆栈,调用next('route')将控件传递给   下一条路线。注意:next('route')仅适用于加载的中间件   使用app.VERB()或router.VERB()。

return next('route')