我正在为我的网站构建一个 API(使用 Node.js 和 Mongoose),并且我想在其中合并分页。我的问题如下:如果页面大小例如为 15,并且我对第一页发出请求,那么它会向我发送按创建日期排序的前 15 个项目,但是如果在我对第二页发出请求之前,在数据库中创建了 15 个新项目,那么如果我只在 mongoose 上使用 Skip,返回的数据将与之前相同。
有没有办法避免 Mongoose 的双倍呢?我现在所拥有的是查询中的“排除”参数,因此它排除了所有已加载的项目,但我想如果有很多加载的项目,URL 可能会很长,我不确定这是一件好事......
是否有更好的方法来做到这一点,还是我必须冒着获得双倍隆的风险而放弃它?
最佳答案
您可以使用mongoose-paginate-v2
为了防止返回的文档出现重复,您可以传递(最后一个文档 ID 和限制)
你的查询应该是这样的:
import { PaginateModel } from 'mongoose-paginate-v2';
constructor(
private readonly _paginateModel: PaginateModel<any>
) {}
const query = this._paginateModel
.find({ _id: { $lt: lastId } });
this._paginateModel.paginate(query, { limit: 10 });
关于javascript - 如何在 Mongoose 中分页而不重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36949887/