我有一个博客。在单个帖子页面上,我想显示前一个链接,如果有,则在底部发布下一个帖子。该链接应该是特定帖子的标题。
如何使用Mongoose最简单的方法?
我当前的控制器如下所示:
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
)
答案 0 :(得分:16)
因此,假设您有这样的架构:
{
_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)
少数事情:
ObjectId
以上代码将不适合您,但您仍然可以使用postDate
代替id和当前post postDate而不是curId
。答案 1 :(得分:1)
查找上一项:
pandas
查找下一个项目:
Post.findOne({_id: {$lt: curId}}).sort({_id: -1}).exec(cb)