首页 > 解决方案 > 如何将 node.js url 参数从 id 更改为博客的关键字

问题描述

我正在使用node.js创建博客,并希望使博客对搜索引擎更友好。

目前,我的一个帖子的显示路线是/blogs/:idid 是一大串数字。
我希望它是,/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});
      }
  })
});

谢谢你的帮助!

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


通常这是通过一种叫做蛞蝓的东西来完成的。它通常在文章撰写时生成,并且是唯一的,但基于文章标题,如您所提到的,用于 SEO 目的。

您想要做的是将 slug 存储在博客文档中并通过它而不是 ID 来查找。如下所示:

Blog.find({ slug: req.params.slug}, function (err, foundBlog) {

您必须为当前存在的所有文章生成 slug,但这应该相对简单地编写脚本 - 通常只是小写、删除标点符号和将空格更改为破折号的问题。如果您想变得花哨,可以删除诸如“ the”之类的琐碎单词。这是一个示例 NPM 包,它可以将字符串转换为开箱即用的 slug:slugify

在所有过去的文章上运行它,并将代码添加到您的博客创作页面中,以便在您保存新文章时生成它。


推荐阅读