我想对存储在云Firestore
中的数据进行分页。它看起来像是:
注意,它与加载更多或无限加载不同。让我们假设,当用户点击寻呼机3 时,我需要向我的Firestore
发出请求,要求从位置50到75获取25个项目(每页25个项目)。
我应该这样做:
db.collection("cities")
.orderBy("population")
.startAfter(lastVisible)
.limit(25);
这里的问题是我没有lastVisible
。我知道我们可以通过获得前50项获得lastVisible
,但它是如此愚蠢,因为如果我喜欢这样,为什么不这样做?
我只获得前75个项目,并在客户端过滤我们想要的内容。
问题是:如何通过Firestore
中的查询从索引到其他索引获取大量项目?
任何帮助,将不胜感激!非常感谢!
答案 0 :(得分:5)
更新回答:
您可以维护一个大小数组作为决定的页数。每个索引的值将表示startAt
字段的cities
字段值。
此外,您还将保留文件的计数。这将帮助您提供限制值(count / numberOfPages
)。
您将在云功能触发器的帮助下维护这两者,如前所述here。
答案 1 :(得分:0)
经典分页非常适合与表格结合使用,遗憾的是当时Firestore并未得到很好的支持。
我建议您将限制数据的方法转换为 Infinte-Scroll
结合强大的过滤选项,您可以存档更好的用户体验
您可以在Firebase文档中找到一个方便的示例:https://firebase.google.com/docs/firestore/query-data/query-cursors#paginate-a-query
更多信息:
https://uxplanet.org/ux-infinite-scrolling-vs-pagination-1030d29376f1
答案 2 :(得分:0)
您可以将文档 ID 推送到数组并使用
查询集合firebase.firestore().collection("users").where(firebase.firestore.FieldPath.documentId(), "in", array)
您可以进一步检索数组索引在(pages10 and pages-110) 之间的数组,其中 page 是您的当前页面