app.use用于不同的路线

时间:2015-05-30 02:12:33

标签: node.js express

我有两个app.use语句,并希望将每个语句用于不同的路由。

        app.use(function(request, response, next){  //also has /sessions/:id etc.
            if(request.url.indexOf("/sessions") == 0) {
                console.log('in sessions', request.url); //executes for both routes
            } else {
                next();
            }
        });


        app.use(function(request, response, next){
            if(request.url.indexOf("/sessions-speakers") == 0) {
                console.log('in sessions speakers', request.url);
            } else {
                next();
            }
        });

但问题是检查网址是第一个app.use并且它的条件在两种情况下都是正确的,我想知道我可以根据路线使用什么来分支。< / p>

期望:

使用app.use中的if语句来解决这两个请求之间的分支问题。

1 个答案:

答案 0 :(得分:0)

了解新功能的一个好方法是查看您尝试使用的功能的文档。在这种情况下,即app.use。以下是official docs。理解函数签名,你遇到的tutorials会更有意义。在这种情况下,您似乎想要使用单个语句并“分支”路由。

尝试:

首先使用字符串调用函数,如下所示:

  app.use("/sessions", function(request, response, next){  
    console.log('in sessions', request.url); //both
    if(request.url.indexOf("/sessions-speakers") == 0) {
      console.log('in sessions speakers', request.url);
    } else {
      next();
    }
  });  

这是模式:

  

字符串|功能|服务器路由,回调或服务器
  功能|服务器回调或服务器
  返回服务器以进行链接

这不是超级干净,但可以胜任。确保在重构​​之前了解每行代码中发生的情况。例如,next()做了什么?