我如何知道是否还有更多文档需要从 Firestore 集合中获取?

How do I know if there are more documents left to get from a firestore collection?

我正在使用 flutter 和 firebase。我使用分页,每页最多 5 个文档。我怎么知道是否还有更多文档需要从 Firestore 集合中获取。我想使用此信息 enable/disable 向用户显示下一页按钮。

限制:5(每次5个文档)

orderBy:“日期”(最新的在前)

startAfterDocument: latestDocument(只是一个保存最新文档的变量)

这就是我获取文件的方式。

collection.limit(5).orderBy("date", descending: true).startAfterDocument(latestDocument).get()

我考虑检查从 firestore 收到的文档数是否等于 5,然后假设有更多文档要获取。但是如果我在集合中总共有 n * 5 个文档,这将不起作用。

我考虑获取集合中的最后一个文档并存储它,并将它与我得到的批次中的每个文档进行比较,如果有匹配项,那么我知道我已经到达终点,但这意味着一个多余的阅读。

或者我可以继续获取文档,直到我得到一个空列表并假设我已经到达集合的末尾。

我仍然觉得有更好的解决方案。

如果您需要更多信息,请告诉我,这是我关于此帐户的第一个问题。

响应中没有标志表明还有更多文档。常见的解决方案是请求比您多一个文档 need/display,然后使用最后一个文档的存在作为还有更多文档的指示器。

这也是数据库在其响应中包含此类标志所必须执行的操作,这可能就是为什么这不是 SDK 中的显式选项的原因。

您可能还想查看 keeping a distributed count of the number of documents in a collection 上的文档,因为这是确定是否需要启用 UI 来加载下一页的另一种方法。