【发布时间】:2020-06-21 07:13:58
【问题描述】:
刚刚第一次实现了“startAfter”。但是,搜索了一下,我找不到我遇到的问题的答案。
当使用“start after”时没有更多要加载的文档时如何最好地处理。
我是否应该在每次触发“加载更多”功能时获取集合的总文档长度。检查总和电流,如果它们相等,请禁用加载更多功能?
如果是这样,我如何找到集合文档的总数?
【问题讨论】:
标签: firebase vue.js google-cloud-firestore
刚刚第一次实现了“startAfter”。但是,搜索了一下,我找不到我遇到的问题的答案。
当使用“start after”时没有更多要加载的文档时如何最好地处理。
我是否应该在每次触发“加载更多”功能时获取集合的总文档长度。检查总和电流,如果它们相等,请禁用加载更多功能?
如果是这样,我如何找到集合文档的总数?
【问题讨论】:
标签: firebase vue.js google-cloud-firestore
我是否应该在每次触发“加载更多”功能时获取集合的总文档长度?
没有。当我们创建分页算法时,我们总是对以较小的块加载数据感兴趣。在 Firestore 中,我们总是对我们获得的每个新块的大小感兴趣。所以基本上,如果新块的大小小于我们设置的限制,例如每页 10 个项目,那么此时您应该禁用“加载更多功能”。
所以这个想法是你可以请求一定大小的数据页面。这是一个名为limit(X) 的有用方法,可以帮助您实现这一目标。因此,您可以执行查询并获得大小为X 的页面。只需使用另一个大小为X 的页面继续该查询,依此类推。因此,您从页面1 开始,然后使用相应的方法浏览页面,您应该指定哪个文档是页面上的最后一个文档,然后继续获取下一页,直到没有剩余元素为止。
如果是这样,我如何找到集合文档的总数?
您需要担心的不是集合中文档的数量,而是您在下一页中获得的项目数量。
【讨论】:
你可以做的就是将最后一个可见文档保存到一个变量中,就像这样
lastVisible = querySnapshot.docs[querySnapshot.docs.length - 1]
【讨论】: