当前,我正在处理新闻提要,并希望在用户向下滚动列表时获取更多数据。最初,我从服务器中获取了按日期排序的特定数量的数据,例如->
var newsFeed = await NewsFeed.find().sort({createdDate: 'desc'}).limit(parseInt(amount));
当用户知道到达列表的末尾时,我想通过简单地增加api调用中的amount变量来加载更多数据。通过当前的调用,我还将获得已经拥有的第一个元素。那么,是否有一种解决方案可以使前10个文档按日期和时间从11-20排序,依此类推?
答案 0 :(得分:1)
如果您的文档已排序,则可以使用skip
。
例如,如果您有10个对象,例如:
{ id:1 }, { id:2 }, { id:3 }, { id:4 } , ... { id:n}
您可以通过这种方式查询所需的文档数量:
var find = await model.find({}).sort({id:1}).limit(amount)
然后,要获取下一个值,可以执行以下查询:
find = await model.find({}).sort({id:1}).skip(amount).limit(amount)
第一个find
(假设数量为2)将返回id
1和2的文档。
第二个find
将返回id
3和4。