2015-07-09 1 views
0

Я ищу способ выйти из цепи промежуточного программного обеспечения без вызова next().Выход из текущей цепи промежуточного программного обеспечения без ошибки бросания

Ниже приведен пример. Это работает, но я должен проверять на req.filter каждый раз, чтобы убедиться, что он установлен в false. Имеет ли какой-либо способ выйти из текущей сети промежуточного программного обеспечения (переход на следующий маршрут), не выдавая ошибку (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

Если вам нужно, чтобы пропустить оставшуюся часть промежуточного программного обеспечения от маршрутизатора стека промежуточного программного обеспечения, вызовите следующий («маршрут»), чтобы передать управление к следующему маршруту. Примечание: next ('route') будет работать только в промежуточном программном обеспечении, загруженном с использованием app.VERB() или router.VERB().

return next('route') 

 Смежные вопросы

  • Нет связанных вопросов^_^