一尘不染

如何使用猫鼬获取当前物品的下一个和上一个物品

node.js

我有一个博客。在单个帖子页面上,我想显示指向上一个帖子的链接,如果有一个链接,则在底部发布下一个帖子。该链接应为特定帖子的标题。

我如何用猫鼬最简单的方式做到这一点?

我当前的控制器如下所示:

Post.findOne { slug : req.params.slug }, (err, post) ->
  res.render "blog/show.jade", locals: title: "This post", post: post

架构如下所示:

PostSchema = new Schema(
  title:
    type: String
    required: true
    index: true
  preamble: String
  body: String
  slug: String
  createdAt: Date
  updatedAt: Date
)

阅读 245

收藏
2020-07-07

共1个答案

一尘不染

因此,假设您拥有这样的架构:

{
 _id,
 text    
}

我想_id是mongo ObjectId,所以我们包含发布日期,我可以对其进行排序

让我们考虑一下,我已经打开了ID为的当前帖子ObjectId( "43cc63093475061e3d95369d")(而不是我将使用curId),并且我需要知道下一个和上一个。还可以考虑一下,我们需要按创建日期降序对所有帖子进行一次排序:

获得下一篇文章,您可以这样:

db.posts.find({_id: {$gt: curId}}).sort({_id: 1 }).limit(1)

获得以前的帖子,您可以这样:

db.posts.find({_id: {$lt: curId}}).sort({_id: -1 }).limit(1)

一些事情:

  1. 如果您不使用mongodb,则ObjectId上述代码对您将不起作用,但是您仍然可以使用postDate代替id和当前post postDate代替curId
  2. 获取下一个/上一个帖子时要注意顺序,要检索需要排序asc的下一个帖子,要检索需要排序desc的上一个帖子。
  3. 我对猫鼬不熟悉,因此上面的脚本是mongodb shell脚本。
2020-07-07