如何有效地使用Firebase数据库进行分页

如何有效地使用Firebase数据库进行分页,firebase,pagination,nosql,Firebase,Pagination,Nosql,我正在签出Firebase作为一个选项,为我的web项目托管一个数据库+一个带有api的后端。Firebase提供两种解决方案,即数据库、云Firestore或实时数据库。它们都是非sql数据库 我一直想知道如何高效地对数千条或数百万条记录进行分页,而不必一次性从数据库中获取所有记录,然后根据需要进行拆分 本文档似乎提到,要分割结果,可以使用startAt/startAfter或endAt/endBefore方法,但要引用记录本身,而不是其在结果中的位置索引(以预定义的顺序) 因此,据我所知,

我正在签出Firebase作为一个选项,为我的web项目托管一个数据库+一个带有api的后端。Firebase提供两种解决方案,即数据库、云Firestore或实时数据库。它们都是非sql数据库

我一直想知道如何高效地对数千条或数百万条记录进行分页,而不必一次性从数据库中获取所有记录,然后根据需要进行拆分

本文档似乎提到,要分割结果,可以使用startAt/startAfter或endAt/endBefore方法,但要引用记录本身,而不是其在结果中的位置索引(以预定义的顺序)

因此,据我所知,您首先需要获取所有记录,可能需要结合where方法进行筛选,以及orderby进行排序,以便获取您将停止或开始计数的对象引用,然后使用limit方法将结果缩小到页面大小


如果是这样的话,我非常担心需要从数百万条记录中获取的后端应用程序的内存使用情况。

Firebase实时数据库和Cloud Firestore中的分页工作基于光标或锚定项

要阅读第一页,您需要创建查询,然后将其限制为(比如)10项

要阅读下一页,您(重新)创建查询,然后告诉它从第一页的最后一项开始,然后返回另外10项


虽然这可能不同于您习惯的基于偏移量的分页,但它决不会读取所有节点/文档。

非常感谢您的澄清!很高兴知道这不会导致性能过载!