游标分页mongodb mongoose



有猫鼬专家可以帮我吗?正如标题所说,我想尝试实现基于光标的分页。我在这里看到了一个关于它的旧帖子,但我想看看我怎么能得到第二组帖子。

我得到这部分

const items = db.items.find({}).sort({
_id: -1
}).limit(2);
const next = items[items.length - 1]._id
res.json({ items, next })

但是我如何应用第二部分呢?我应该为此创建一条单独的路线吗?

const items = db.items.find({
_id: { $lt: req.query.next }
}).sort({
_id: -1
}).limit(2);
const next = items[items.length - 1]._id
res.json({ items, next })

您应该在1条路由中实现此功能,使用skiplimit

一样:

const skip = Number(req.query.skip ?? 0);
const limit = Number(req.query.limit ?? 2);
const items = db.items.find({}).sort({
_id: -1
}).skip(skip).limit(limit);
const next = items[items.length - 1]._id
res.json({ items, next })

现在对于下一页,您将需要发送包含这些新查询参数的请求:

https://myapp.com/myroute?skip=2&limit=2

---- EDIT ----.

使用next对象id而不是skip来跳过,如下所示:

const filterQuery = {};
if (req.query.next) {
filterQuery._id = {$lt: ObjectId(req.query.next)}
}
const items = db.items.find(filterQuery).sort({
_id: -1
}).limit(2);
const next = items[items.length - 1]._id
res.json({ items, next })

调用将是:

https://myapp.com/myroute?next={{itemId}}

相关内容

  • 没有找到相关文章

最新更新