我正在寻找一种方法来退出一系列中间件,而无需调用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")
})
我喜欢一些以任何标准方式解决这个问题的框架或库。
答案 0 :(得分:1)
如果您需要从路由器中跳过其余的中间件 中间件堆栈,调用next('route')将控件传递给 下一条路线。注意:next('route')仅适用于加载的中间件 使用app.VERB()或router.VERB()。
return next('route')