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方法时抛出这些错误。