当前位置: 首页 > 知识库问答 >
问题:

从Firebase数据库节点读取部分数据(不是全部)

冯嘉荣
2023-03-14

我正在处理需要以这种方式读取 firebase 节点的项目:

假设我在Firebase实时数据库中有一个节点消息。在该节点中,我有20,000消息。当用户在消息框中输入时,我需要显示消息。但是一次阅读所有20,000消息太耗时了。

我想要的是,一次读取30-40消息并将其显示给用户。当用户按下更多消息按钮时,我会读取另一个30-40消息并将其显示给用户。依此类推……会更快更方便。

但是我找不到任何方法让事情像这样工作。我尝试了ValueEventListener(),但是它读取了消息节点中的所有数据,而且很耗时。我也尝试了reference.limitToFirst(30),但是它读取了前30条消息,然后我该怎么办?我如何读取接下来的30条消息?

我能清楚地提出我的问题吗?:(提前谢谢。

共有1个答案

莫誉
2023-03-14

但是一次阅读所有20,000条消息太耗时了。

20000条消息可以被视为大量数据。因此,我强烈建议不要一次性加载如此大量的数据。

我想要的是,一次阅读30-40条消息,并向用户显示这些消息。当用户按下更多消息按钮时,我将阅读另外30-40条消息并将其显示给用户。等等....它会更快,更方便。

你要找的叫做分页。这意味着您需要以更小的块来渐进地加载数据。你需要加载一组30-40条消息,一条接一条。这个问题之前已经讨论过很多次了,对于实时数据库,这个问题已经有了很多解决方案:

  • https://stackoverflow.com/search?q=Firebase 实时数据库分页Android

我也试着引用它。limitToFirst(30)但它读取前30条消息,那么我该怎么办?我如何阅读接下来的30条消息?

我建议你看看其中的一些问题,并尝试一下。如果您很难实现它,请向我们展示您所尝试的MCVE,这样,我和其他Firebase开发人员可以帮助您。

然而,如果您考虑在某个时间点尝试使用Cloud Firestore,我认为这个答案会有所帮助:

  • 如何用Android分页FiRecovery?

如果您想更进一步,尝试使用Jetpack Compose,那么我认为这个资源会有所帮助:

如何使用喷气背包撰写在火库中实现分页?

 类似资料:
  • 我试图从Firebase数据库中读取数据,我已经到处阅读和查找,但我已经走到了死胡同。 这就是我所做的一切。 依赖项: 实现'com.google.firebase: Firebase存储: 9.2.1' 实现'com。谷歌。firebase:firebase数据库:9.2。1' 实现'com。谷歌。firebase:firebase授权:9.2。1' 实现'com。谷歌。火基:火基核心:9.2。

  • 我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(

  • 因此,我尝试拍摄数据库的快照,并添加带有子项的数组字符串中的项。 我的set和get java文件如下所示 但是,当我的程序到达dataQuery方法并尝试获取和设置名称和成分时,它会崩溃。有人能解释一下我做错了什么,以及是否有更好的方法来使用数据库快照来做到这一点吗? 进程:in.tvac.akshayejh.firebasesearch,PID:24798java.lang.NullPoint

  • 如何从控制台从FireBase中删除节点?由于它太大,显然我无法从控制台中删除它。通常我可以按节点名称附近的删除按钮,但它显示控制台仅出于性能原因而读取。

  • 我遇到的问题是,使用下面显示的以下Firebase规则,经过身份验证的用户可以成功写入数据库,但无法从中读取,因为我在控制台中获得了“拒绝权限”。当我将读取和写入设置为true(公共)时,读取和写入功能都正常工作。我从数据库中读取的代码也显示如下: 规则: 示例数据库: 以下是确切的错误:

  • 我正在尝试读取我的Flutter应用程序中的firebase实时数据库中的数据,并将其分配给模型类,但是,我在控制台中得到了以下错误。 下面是我到目前为止所做的代码 员工类别 我不知道我做错了什么,请帮我解决这个问题