【问题标题】:NODEJS - Reroute on same UrlNODEJS - 在同一个 URL 上重新路由
【发布时间】:2016-03-12 09:54:35
【问题描述】:

我有点陷入困境。请帮帮我

我要解决的问题是-

我得到了一些 post 参数,我想根据 NodeJs 中的这些参数进行路由。现在的问题是,当我使用 switch case 在 post params 的基础上进行路由时,重新路由没有发生。

router.post('/', function (req, res, next) {
    var method = req.body.method;
    switch (method) {
        case 'register_user':
            router.post('/', userController.registerUser);
            break;
        case 'user_login':
            router.post('/', userController);
            break;
}
});

【问题讨论】:

标签: node.js express routing


【解决方案1】:

您在 switch 上下文中的重新路由代码只是在路径 / 上附加了更多中间件,实际上并没有按照您的想法进行路由。

修改如下:

router.post('/', function (req, res, next) {
    var method = req.body.method;
    switch (method) {
        case 'register_user':
            // returned since you want route to the function
            return userController.registerUser(req, res, next);
            break;
        case 'user_login':
            return userController(req, res, next);
            break;
    }
});

【讨论】:

  • 谢谢汉克,但我只想重新路由,因为我想像这样一个一个地执行多个功能,router.post('/', a,b,c);其中 a,b,c 是函数。按照自己的方式进行操作会使代码混乱
  • 重定向会导致另一个请求,可能会增加负载均衡器的流量
  • 不知道ES6 generator是否满足你的需求。您可能需要将子回调重写为生成器并正确使用co
猜你喜欢
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 2012-01-01
  • 2012-02-16
相关资源
最近更新 更多