我有一个博客。在单个帖子页面上,我想显示指向上一个帖子的链接,如果有一个链接,则在底部发布下一个帖子。该链接应为特定帖子的标题。
我如何用猫鼬最简单的方式做到这一点?
我当前的控制器如下所示:
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 )
因此,假设您拥有这样的架构:
{ _id, text }
我想_id是mongo ObjectId,所以我们包含发布日期,我可以对其进行排序
让我们考虑一下,我已经打开了ID为的当前帖子ObjectId( "43cc63093475061e3d95369d")(而不是我将使用curId),并且我需要知道下一个和上一个。还可以考虑一下,我们需要按创建日期降序对所有帖子进行一次排序:
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)
一些事情:
ObjectId
postDate