如何强制流星铁:路由器参数整数?

时间:2015-04-23 17:05:25

标签: meteor iron-router

我经常使用代码强制params为整数,我想知道IR是否有更好的方法来处理这种常见情况:

@route 'units',
  path: "/units/:book?"
  name: 'units'
  waitOn: ->
    book = parseInt(@params.book)
    PubSubMan.subscribe "Tiles", {book: book}

这很痛苦,因为parseInt(@params.book)必须在查找使用params的查询中完成,我还需要防范非数字等等。

似乎那种类型转换可能是路由器级别选项,但无法找到任何内容in the docs

2 个答案:

答案 0 :(得分:0)

这样的东西
this.route('units', {
  path: /^\/units\/(\d+)/
});

确保在路径中尝试使用/不使用最后一个斜杠,并根据需要更新正则表达式。

您可以使用以下方式访问参数:

this.params[0]

答案 1 :(得分:0)

我无法得到Roman的建议,因为正则表达式对象似乎不允许作为路径。我收到这里描述的错误: https://github.com/iron-meteor/iron-router/issues/887

Exception in template helper: Error: Cannot currently resolve a regular expression path

相反,我觉得这很有用:https://github.com/pillarjs/path-to-regexp#custom-match-parameters

简而言之,我会尝试以下方法:

this.route('units', {
    path: '/units/:book(\\d+)?'
});

然后您可以像往常一样使用this.params.book