Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将node.js url参数从id更改为博客的关键字_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 如何将node.js url参数从id更改为博客的关键字

Javascript 如何将node.js url参数从id更改为博客的关键字,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我创建了一个博客使用,并希望使博客更搜索引擎友好 目前,我的一篇文章的显示路径是/blogs/:id,id是一个巨大的数字字符串 我希望它是/blogs/title of example post,但我在网上找不到任何说明如何使用javascript实现这一点的内容 是否可以编写一个函数,通过id查找文章并在url中显示其标题?这是我的表演路线代码。 app.get("/blogs/:id", function(req, res){ Blog.findById(req.params.id,

我创建了一个博客使用,并希望使博客更搜索引擎友好

目前,我的一篇文章的显示路径是
/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});
      }
  })
});

谢谢你的帮助

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

您要做的是将slug存储在Blog文档中,并通过该文档而不是ID进行查找。如下所示:

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

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


在所有以前的文章中运行该命令,并在保存新文章时将代码添加到博客创作页面以生成该命令。

通常这是通过一个名为slug的程序完成的。该命令通常在文章撰写时生成,并且是唯一的,但基于文章标题,如您所述,用于SEO目的

您要做的是将slug存储在Blog文档中,并通过该文档而不是ID进行查找。如下所示:

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

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


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

是否可能?是的,当然;您需要在Mongoose中查找如何按ID以外的字段搜索。是否可能?是的,当然;您需要查找如何按ID以外的字段搜索Mongoose。谢谢您的帮助!我对这个问题有点陌生,如果我用这个问题打扰你,我很抱歉。我安装了slugify,似乎无法让我的代码在url中对标题进行slugify。这是我所拥有的。任何更多的帮助都将不胜感激!谢谢你的帮助!我对这个问题有点陌生,非常抱歉,如果我用这个问题打扰你。我安装了slugify而且似乎无法让我的代码在url中插入标题。这是我所拥有的。任何更多的帮助都将不胜感激!