如何使用Mongoose获取当前项目的下一个和上一个项目
How to fetch next and previous item of the current one with Mongoose
我有一个博客。在个人帖子页面上,我想显示上一篇文章的链接,如果有,下一篇文章会在底部发布。链接应该是特定帖子的标题。
如何使用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
)
所以假设您有这样的模式:
{
_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)
很少的事情:
- 如果你不使用mongodb
ObjectId
,上面的代码将不适用于你,但你仍然可以使用postDate
代替id,使用currentpostpostDate代替curId
- 获取下一篇/上一篇帖子时要注意顺序,检索下一篇帖子需要排序asc,检索上一篇文章需要排序desc
- 我不熟悉mongoose,所以上面的脚本是mongodbshell脚本
查找上一项:
Post.findOne({_id: {$lt: curId}}).sort({_id: -1}).exec(cb)
查找下一项:
Post.findOne({_id: {$gt: curId}}).sort({_id: 1}).exec(cb)
相关文章:
- angularjs移除焦点上的活动类并添加到下一个项目
- 如何使用jquery将所选项目从一个下拉组列表(optgroup)移动到另一个下拉列表(optgroup)
- 如何在猫头鹰旋转木马中滑动所有可见项目,而不是使用上一个/下一个按钮
- 正在获取下一个可用编号,跳过数组中的项目
- 滚动到列表中的特定项目,然后滚动到列表的下一个特定项目
- 角度 - ng 网格通过分组按语法选择下一个/上一个项目
- 每个空格键 - 预览下一个和上一个项目
- 显示数组的下一个/上一个项目
- 数组中的上一个/下一个项目
- 下一个和上一个按钮将在OWL旋转木马上滑动2个项目
- 使用jQuery进行Javascript分页(下一个项目/上一个项目)
- 适合我的下一个“;侧面“;项目
- jQuery/JS–点击博客图片滚动到下一个博客项目
- 如何使用Mongoose获取当前项目的下一个和上一个项目
- 如何使用jQuery设置每个项目的背景颜色到下一个项目
- jQuery carousel -当到达列表上的最后一个项目时,禁用下一个/上一个链接
- 猫头鹰旋转木马下一个项目
- 这怎么能等到更新完成后再移动到下一个项目呢?
- 在CKEDITOR中如何找到当前光标位置的下一个项目
- 自动触发下一个选定项目