首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb猫鼬分类和分页聊天消息

Mongodb猫鼬分类和分页聊天消息
EN

Stack Overflow用户
提问于 2022-02-07 14:29:21
回答 1查看 157关注 0票数 1

我正在制作一个聊天应用程序,每页加载10条消息。消息从最旧的到最新的排序,因此新消息在底部,旧消息在顶部。我尝试使用skip()和limit()方法--它不起作用。

代码语言:javascript
复制
let count = page*10

MessageModel.find(find_query).sort({createdAt: 'asc'}).skip(count-10).limit(10).exec();

例如:

让这些是我的消息排序最古老的最新:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]

上面的查询返回如下第1页中的数据:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

第二页:["11", "12"]

但我希望它能回来

第一页:["3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]

第二页:["1", "2"]

编辑:--我试着将其排序为降序和倒转,这似乎解决了问题。

代码语言:javascript
复制
let count = page*10

const messages = await MessageModel.find(find_query).sort({createdAt: 'desc'}).skip(count-10).limit(10).exec();

const re_messages = messages.reverse()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-07 14:43:25

由于您希望首先显示消息3至12,所以需要使用'desc‘而不是'asc’进行排序,以便首先获得最新消息。这将给你["12", "11", ... "4", "3"]。现在您所要做的就是反转这个数组以获得["3", "4", ... "11", "12"]

代码语言:javascript
复制
let count = page*10

let messages = await MessageModel
                        .find(find_query)
                        .sort({createdAt: 'desc'}) // get the latest ones
                        .skip(count-10)
                        .limit(10)
                        .exec()
                        .lean(); // Get a simple array

messages.reverse(); // ["3", "4", ... "11", "12"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71020221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档