2016-06-20 3 views
0

Кто-нибудь знает, как динамически перенаправлять вызов в Express (Node.js)? Мой маршрут условно расходится в какой-то момент, и я хотел бы как-то изменить параметр «next()» для этого.Reroute Express динамически через следующий()

Например, предположим, что у меня есть следующие маршруты:
ROUTE1 = FUNC1, func2, FUNC3
route2 = func4, func5

Я хотел бы следующий поток произойти:
func1 => func2 (перенаправлять на route2, если Android) => func4 => func5
func1 => func2 (не перенаправлять, если прошивкой) => FUNC3

Я считал res.redirect (/ route2), но я хотел бы, чтобы перенаправление происходило внутри страны, не зная об этом на стороне клиента.

Любая помощь с учётом,

Спасибо!
Henri

+0

Просто поместите свой маршрут код обработки в независимых функциях и использовать логику 'if' для вызова желаемых функций. Вам не нужно указывать клиенту перенаправление. Вы можете просто вызвать функции, которые вы хотите выполнить. – jfriend00

+0

Спасибо за ответ! Это то, что я делал, но я хотел использовать существующие функции, которые используются другими маршрутами, с сигнатурами функции (req, res, next). Я закончил использование async.waterfall, что позволило мне повторно использовать эти функции! – cybermach

ответ

0

Я закончил использовать async.waterfall для решения моей проблемы довольно чистым способом. Для тех, кто работает с той же проблемой и хочу повторно использовать существующие функции, используемые другими способами, вы можете использовать async.waterfall и использовать «СВ» для «следующего» параметра как таковые:

conditionalReroute: function(req, res, next) { 

     if(someCondition) { 
     async.waterfall([ 
         function(cb){route1.someFunction(req, res, cb); }, 
         function(cb){ route2.someOtherFunction(req, res, cb); }, 
         function(cb){ route1.soomeFunction2(req, res, cb); }, 
         } 
        ]); 

     } else { 
      next(); 
     } 
} 
Смежные вопросы