node.js - 给定 id 的 MongoDB 计数
问题描述
我有一个关于从 MongoDB 查询的问题。
我有一个在 MongoDB 中创建的聊天模块。
当从前端查询消息时,它会查询以便首先检索最新消息
目前,我的查询看起来像这样
async findChatHistory(query: ChatHistroyDto): Promise<Chat[]> {
return await this.chatModel
.find({
$or: [
{ fromUserId: query.fromUserId, toUser: query.toUserId },
{ fromUserId: query.toUserId, toUser: query.fromUserId },
],
}, null, {limit: query.limit})
.sort({ timeStamp: 'asc' })
}
这很好用,但我想添加第二个参数以添加为偏移量/跳过。
问题是,在用户再次访问此服务方法之前,可以保留多条消息,所以理想情况下它应该是{lastMessageId: '123', limit: 10}
. 由于我们检索消息的顺序,我们需要从lastMessageId
. 所以客户端可以提供最后收到的消息的 id,MongoDB 将从该 id 开始查询。
示例客户端请求 lastMessageId:null,限制:3
msg1, msg2, msg3
客户端请求:lastmessageId:'msg3',限制:2
msg4, msg5
解决方案
推荐阅读
- javascript - JS 可以判断复选框何时被选中或未选中?
- rest - AWS ALB 后面的微服务(ish)设置中的健康检查路由组织
- typescript - TypeScript 中的“复合类型”
- sql-server - 如何将多月数据放入多列
- git - 使用 Visual Studio 代码在 Visual Studio Team Server(或 gitlab)上创建远程 git 存储库
- c++ - 在排序的文本文件中实现二进制搜索?
- angularjs - 使用 ng-options 和 'as' 设置标签('track by' 替代方案)
- python - 从 Sage 中提取单一解决方案
- javascript - React 中状态更新时动态更改获取请求 url
- events - Google 表格 onEdit 事件不起作用