【问题标题】:iron-router routes with same root path in meteor流星中具有相同根路径的铁路由器路由
【发布时间】:2015-03-30 23:19:33
【问题描述】:

我是 Meteor 和 Iron-router 的新手。

我需要这两条路线:

/movie/:title
&
/movie/title?q=queryText

这是我的路由代码(/server/myRoute.js):

// http://localhost:3000/movie/MovieTitleHere
// Result Output: Route 1 (correct)
Router.route('/movie/:title', function() {
    var res = this.response;
    res.end("Route 1");
}, { where: 'server' });

// http://localhost:3000/movie/title?q=queryText
// Result Output: Route 1 (incorrect)
Router.route('/movie/title', function() {
    var res = this.response;
    var query = this.params.query;
    var searchQuery = query.q;
    res.end("Route 2" + searchQuery);
}, { where: 'server' });

但总是触发第一条路线,如何设置?

我想要任何覆盖解决方案来覆盖第一条路线。

我在 Iron-router 文档中没有找到任何关于此的内容。

编辑:

@Tom 解决方案可以,但是如果我想将这两条路线组织在两个单独的文件中怎么办? (例如 route1.js 和 route2.js)

【问题讨论】:

    标签: node.js meteor routing routes iron-router


    【解决方案1】:

    我想你只需要先声明更具体的路线,即/movie/title/:title

    在你的代码中首先拥有它,你应该很好。

    作为对您的编辑的回应,我认为您的代码应该是相反的:

    // http://localhost:3000/movie/title?q=queryText
    // Result Output: Route 1 (incorrect)
    Router.route('/movie/title', function() {
      var res = this.response;
      var query = this.params.query;
      var searchQuery = query.q;
      res.end("Route 2" + searchQuery);
    }, { where: 'server' });
    
    // http://localhost:3000/movie/MovieTitleHere
    // Result Output: Route 1 (correct)
    Router.route('/movie/:title', function() {
      var res = this.response;
      res.end("Route 1");
    }, { where: 'server' });
    

    正如您所写,/movie/:title 表示匹配 /movie/ 后跟任何内容。由于“title”一词属于“anything”的广义子集,因此您永远不会到达第二条路线。

    相反,相反,首先有更具体的路线。

    希望这是有道理的!

    【讨论】:

    • 你说得对,这是可行的,但如果我添加查询字符串,它就不起作用了。我将我的路线代码添加到问题中。请看上面。谢谢
    • 编辑了我的答案以包含您的代码。手指交叉它很有用。
    • 是的,谢谢。它正在工作,但是如果我想将这两条路线组织在两个单独的文件中怎么办? (例如 route1.js 和 route2.js)
    • 我相信流星按字母顺序加载文件,所以这可能是一种解决方案 - Meteor 文档更详细地解释了文件加载的顺序:docs.meteor.com/#/full/structuringyourapp
    猜你喜欢
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2016-08-18
    • 2015-08-11
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多