在博客文章中使用Title作为URL参数

时间:2017-07-22 18:57:09

标签: node.js mongodb express mongoose

我正在使用Mongoose和express表达一个类似CRUD博客的小网页

现在,每个帖子的路由使用URL上的ID,如下所示:

singlePost.get = () => {

  Blog.findById(req.params.id, (err, blogs) => {
    if (err) {
      throw err
    } else {

      res.render('single_post', {
        blogs: blogs
      })
    }
  })
}

只是链接博客+ Id以及它。 www.mypage.com/blog/id按预期工作。

但我希望得到帖子的标题而不是Id。所以我添加一个" title2"我存储在DB上的文档上的参数。标题2只是标题后我修改了一点来改变"帖子的标题"到" title_of_the_post"。

它有效,我可以在视图上使用title2参数来表示我的所有帖子。

要将title2用作url param,我尝试了这个:

singlePost.get = (req, res) => {

  Blog.find({title2: req.params.title2}, (err, blogs) => {
    if (err) {
      throw err
    } else {
      console.log(blogs);
      res.render('single_post', {
        blogs:blogs
      })
    }
  })
}

console.log实际上返回了对象:

[ { _id: idNumber,
    title2: 'esto_debiera_ser_el_titulo_2',
    body: '<p>jojoji sjsjjdh</p>',
    title: 'esto debiera ser el titulo 2',
    __v: 0,
    createdAt: 2017-07-22T15:56:03.575Z } ]

但是在视图上我现在无法访问与之前相同的值。我正在使用把手,所以只是{{blogs.title}}等等。

如果我需要的元素被退回,为什么我不能像以前一样在视图上使用它?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

findById返回单个对象,find返回一个数组。使用findOne获得所需的结果。