通过next()

时间:2016-06-20 19:05:08

标签: node.js express

有人知道如何在Express(Node.js)中动态重新路由呼叫吗?我的路线在某些时候有条件地发散,我想以某种方式改变“next()”参数。

例如,假设我有以下路线:
route1 = func1,func2,func3
route2 = func4,func5

我希望发生以下流程:
func1 => func2(如果是Android则重新路由到route2)=> func4 => func5
func1 => func2(如果是iOS,请不要重新路由)=> FUNC3

我考虑过res.redirect(/ route2),但我希望重新路由在内部发生,而不是客户端知道它。

感谢任何帮助,

谢谢!
亨利

1 个答案:

答案 0 :(得分:0)

我最终使用async.waterfall以相当干净的方式解决了我的问题。对于那些遇到同样问题并希望重用其他路由使用的现有函数的人,可以使用async.waterfall并使用" cb"对于" next"参数如下:

 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();
      } 
}