如何使用 Mongoose 获取当前项的下一项和上一项

     2023-03-10     248

关键词:

【中文标题】如何使用 Mongoose 获取当前项的下一项和上一项【英文标题】:How to fetch next and previous item of the current one with Mongoose 【发布时间】:2012-02-27 12:39:46 【问题描述】:

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

如何使用 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
)

【问题讨论】:

请提供有关您的架构的信息,以便我们为您提供帮助。 MongoDB 是非结构化的,因此您不能只获得“下一个”。您需要对字段进行一些排序,以检测“之前”和“之后”的内容 已更新为上述架构。猜猜你能以某种方式使用日期? 【参考方案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)

几件事:

    如果你不使用 mongodb ObjectId 上面的代码对你不起作用,但你仍然可以使用 postDate 代替 id 和当前帖子 postDate 代替 curId。 在获取下一篇/上一篇文章时要注意顺序,要检索下一篇文章需要按 asc 排序,要检索上一篇文章需要按降序排序。 我对mongoose不熟悉,所以上面的脚本是mongodb shell脚本。

【讨论】:

【参考方案2】:

查找上一个项目:

Post.findOne(_id: $lt: curId).sort(_id: -1).exec(cb)

查找下一项:

Post.findOne(_id: $gt: curId).sort(_id: 1).exec(cb)

【讨论】:

根据前一项的ID获取数组中的下一项[关闭]

...布时间】:2016-11-0709:19:06【问题描述】:一点背景资料我使用AngularJS作为前端框架,并使用Laravel作为前端通信的API。问题对于这个应用程序,我有一个“部分”,在视图中有一个下一个/上一个按钮,当单击下一个时,会使用当 查看详情

获取循环中的下一项

...项目,则该行中的其他单元格可以保持空白。我试图了解如何在这里使用迭代,但无法弄清楚它如何适合我所拥有的。另外,我认为应该可以以更简单的方式执行此操 查看详情

Ruby on Rails:获取模型中的下一项

...“显示”视图上运行railsgscaffoldbookname:stringabout:text,我将如何实现一个按钮以转到模型中的下一个项目。我不能简单地做@next=@book.id+1,因为如果@book.id=2(例如)我点击了id为3的 查看详情

Javascript:通用获取数组中的下一项

】Javascript:通用获取数组中的下一项【英文标题】:Javascript:Genericgetnextiteminarray【发布时间】:2013-04-3007:50:02【问题描述】:我正在尝试创建一个JavaScript函数,该函数将在字符串数组中搜索一个值并返回下一个字符串。例如,... 查看详情

如何从数据库c#中创建多年的下一个和上一个按钮

】如何从数据库c#中创建多年的下一个和上一个按钮【英文标题】:Howtocreatenextandpreviousbuttonforyearsfromdatabasec#【发布时间】:2018-03-2718:02:32【问题描述】:我有一个用mysql数据库填充的组合框。当用户从组合框中选择一年后,我... 查看详情

如何默认选择第一项,然后在角度 6 中突出显示选定的下一项 json 数据

】如何默认选择第一项,然后在角度6中突出显示选定的下一项json数据【英文标题】:howtoselectfirstitembydefaultandthenhighlighttheselectednextitemofjsondatainangular6【发布时间】:2019-01-1715:08:21【问题描述】:这是我的customer.component.html。我... 查看详情

如何定位动态条目网格行中的第一项和最后一项?

】如何定位动态条目网格行中的第一项和最后一项?【英文标题】:HowcanItargetfirstandlastiteminagridrowofdynamicentries?【发布时间】:2017-08-0900:00:11【问题描述】:以下是我正在使用的工具:Vuejs具有砖石布局的JqueryPackery我正在构建一... 查看详情

python程序设计求s=1+2+4+7+11+16...211的和?

...循环来计算每一项的值,同时累加它们的和。下面是一个使用Python语言的程序:s=0#初始化和为0n=1#初始化序列的第一项为1foriinrange(21):#计算前21项的和(211是第21项)s+=n#将当前项加到和中n+=i+2#计算下一项print(s)#输出结果运行这... 查看详情

使用php的下一个和上一个按钮[重复]

】使用php的下一个和上一个按钮[重复]【英文标题】:nextandpreviousbuttonsusingphp[duplicate]【发布时间】:2016-06-0120:43:08【问题描述】:我重新发布这个问题是因为我只有一个没有用或根本没有帮助的答案。我正在尝试制作一个php幻... 查看详情

如何使用javascript记录链接点击,然后自动点击Qualtrics中的下一步按钮?

】如何使用javascript记录链接点击,然后自动点击Qualtrics中的下一步按钮?【英文标题】:HowtorecordalinkclickandthenautomaticallyclicknextbuttoninQualtricswithjavascript?【发布时间】:2021-09-2201:11:02【问题描述】:我正在Qualtrics进行一项调查。... 查看详情

如果条件满足,列表中的下一项

】如果条件满足,列表中的下一项【英文标题】:Nextiteminalistifconditionmet【发布时间】:2017-04-2416:21:58【问题描述】:candidates=[\'abacus\',\'ball\',\'car\']forcandidateincandidates:ifdict[candidate]=="true":"""next"""else:continue"""dosomething"""我在这里... 查看详情

java示例代码_在循环时,确保可变数组中的下一项实际上是下一项

java示例代码_在循环时,确保可变数组中的下一项实际上是下一项 查看详情

如何从 SearchBar 中获取 Tableview 中所有项目的当前项目的索引

】如何从SearchBar中获取Tableview中所有项目的当前项目的索引【英文标题】:HowtogettheindexofcurrentitemofallitemsinTableviewfromSearchBar【发布时间】:2017-03-0316:21:47【问题描述】:我正在尝试从Tableview中删除一个项目,如果SearchBar为空,一... 查看详情

如何获取SQL表中的下一条记录

】如何获取SQL表中的下一条记录【英文标题】:HowtogetthenextrecordinSQLtable【发布时间】:2009-02-0301:57:26【问题描述】:我的MSSQL表中有一组记录。以日期为主键。但日期仅适用于工作日,而不适用于连续日。例如:2000年1月3日凌晨... 查看详情

滚动库中的下一个和上一个按钮中的错误

...个/上一个按钮。我在这里找到了一个帖子,显示了一个使用jQuery(fiddle)的解决方案,我已经设法 查看详情

如何从祖先中获得 JQuery 的下一步

】如何从祖先中获得JQuery的下一步【英文标题】:HowtogetnextwithJQueryoutofancestor【发布时间】:2012-05-1014:04:35【问题描述】:我想要当前“a”的下一个“a”元素。当电流为2,3,4时,我用$(\'a.current\').nextAll(\'a\')捕获3,4,5但当电流为5... 查看详情

引导选项卡:表单的下一个和上一个按钮

...尝试(最终)将表单拆分为多个Bootstrap3.x选项卡,但我在使用上一个和下一个按钮时遇到问题。只有第一个下一个按钮起作用,有时当手动单击选项卡或使用按钮时,选项卡内容在选项卡之间根本不会改变。<ulclass="n 查看详情

C++ 自定义流操纵器,可更改流中的下一项

】C++自定义流操纵器,可更改流中的下一项【英文标题】:C++customstreammanipulatorthatchangesnextitemonstream【发布时间】:2010-10-2210:12:43【问题描述】:在C++中,要以十六进制打印数字,请执行以下操作:intnum=10;std::cout<<std::hex<&... 查看详情