忽略快速路线中的单词

时间:2014-03-24 19:18:13

标签: regex node.js express routes

我有以下路线:

app.get('/blah/query.json', doSomething);
app.get('/blah/:id.:format', doSomethingElse);

目前两个路由都在继续,因此调用路由一(query.json),然后调用路由二(:id。:format)。如果调用路由1,如何排除对路由2的调用。我试过这样的事情:

app.get('/blah^\/(?!query)(:id.:format)$', doSomethingElse);

但是,这个以及其中的一些变体似乎并不起作用。我找到了一篇引用快递代码here的帖子。即使查看此代码并尝试不同的事情,我仍然无法使“If not query”表达式工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您设置如下信号量,该怎么办?:

var sempahore_execute_second = true;

app.get('/blah/query.json', function(req,res,next){
    sempahore_execute_second = false;
});

app.get('/blah/:id.:format', function(req,res,next){
    if (sempahore_execute_second) {
        // Execute code here.
    };
}));

// or better:
app.get('/blah/:id.:format', function(req,res,next){
    if (sempahore_execute_second) return next();

    // Execute code here.
}));

我知道有点乱,你应该期待另一个解决方案,但也许这可以帮助你。