我有两个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语句来解决这两个请求之间的分支问题。
答案 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()
做了什么?