Meteor 添加URL友好的slug

Meteor 添加URL友好的slug,meteor,iron-router,meteor-helper,Meteor,Iron Router,Meteor Helper,目前我拥有的是 http://www.example.com/_id 我不想在url中显示生成的id,而是想在url中显示我文章的标题。比如 http://www.example.com/this_is_a_new_post 我是否必须为此在集合中添加slug字段?是否有任何解决方案可以让我创建一个友好的url,而不必创建另一个冗余字段,如slug 另外,我不想使用软件包。我想不用软件包也可以轻松完成。最简单的方法就是使用/:title。Iron将自动解码标题。Firefox可以很好地处理这些U

目前我拥有的是

http://www.example.com/_id

我不想在url中显示生成的
id
,而是想在
url
中显示我文章的标题。比如

http://www.example.com/this_is_a_new_post

我是否必须为此在集合中添加
slug
字段?是否有任何解决方案可以让我创建一个友好的url,而不必创建另一个冗余字段,如
slug


另外,我不想使用软件包。我想不用软件包也可以轻松完成。

最简单的方法就是使用
/:title
。Iron将自动解码标题。Firefox可以很好地处理这些URL。它只是转换它们,所以用户可以看到包含所有特殊字符的实际标题。此外,所有iron助手都正确编码URL字符串

要创建slug,可以使用类似以下函数的功能:

createURLSlug = function (url) {
  var slugRegex = /[^\w\-\.\~]/g
  while(slugRegex.test(url)) {
    url = url.replace(slugRegex, '-')
  }
  return url
}
我使用这个正则表达式作为参考

如果正在使用,还可以使用自动值:

...
  slug: {
    type: String,
    autoValue: function () {
      return createURLSlug(this.field('title').value)
    }
  }
...

您是否使用熨斗:路线Yes我正在使用熨斗进行路线为此,我需要在集合中创建一个
slug
字段,对吗?这难道不是多余的吗?同样在路由器中,而不是在
/:slug
中,我需要返回
/:title
?是的,我将为它创建一个单独的字段,是的,它将是冗余的。但您也可以将大多数缓存中的信息称为冗余信息。使用
slug
字段作为缓存将使您无需在每次调用路由时运行该函数。您需要使用
/:slug
作为路由路径。使用此解决方案时,我确实会遇到错误。我使用的是简单模式和自动表单。我尝试提交表单时出现此错误。但是,我尝试在autoform中使用
钩子
,但没有效果。因为默认情况下,自动值不会添加到我从文档中使用的autoform中。使用
autoform
钩子的问题是,它不是非常动态的。例如,如果您想使用
somecollection.update
update,钩子不会被触发。您得到的错误是什么?它给出了一个
deny.insert
错误,
createurlslaug
未定义错误。它在尝试从autoform调用insert方法时抛出这些错误。