javascript - 如何将 node.js url 参数从 id 更改为博客的关键字
问题描述
我正在使用node.js创建博客,并希望使博客对搜索引擎更友好。
目前,我的一个帖子的显示路线是/blogs/:id
id 是一大串数字。
我希望它是,/blogs/title-of-example-post
但我在网上找不到任何说明如何使用 javascript 执行此操作的内容。
是否可以编写一个可以通过 id 查找帖子并在 url 中显示其标题的函数?这是我的表演路线代码。
app.get("/blogs/:id", function(req, res){
Blog.findById(req.params.id, function(err, foundBlog){
if(err){
res.redirect("/blogs");
} else {
res.render("show", {blog: foundBlog});
}
})
});
谢谢你的帮助!
解决方案
通常这是通过一种叫做蛞蝓的东西来完成的。它通常在文章撰写时生成,并且是唯一的,但基于文章标题,如您所提到的,用于 SEO 目的。
您想要做的是将 slug 存储在博客文档中并通过它而不是 ID 来查找。如下所示:
Blog.find({ slug: req.params.slug}, function (err, foundBlog) {
您必须为当前存在的所有文章生成 slug,但这应该相对简单地编写脚本 - 通常只是小写、删除标点符号和将空格更改为破折号的问题。如果您想变得花哨,可以删除诸如“ the”之类的琐碎单词。这是一个示例 NPM 包,它可以将字符串转换为开箱即用的 slug:slugify
在所有过去的文章上运行它,并将代码添加到您的博客创作页面中,以便在您保存新文章时生成它。