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



我正在进行一个项目,其中我需要以这种方式读取firebase节点:

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

我想要的是,一次读取30-40消息并将其显示给用户。当用户按下more message按钮时,我将阅读另一条30-40消息并将其显示给用户。等等…它会更快更方便。

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

我能把我的问题说清楚吗(提前谢谢。

但是一次读取全部20000条消息太耗时了。

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

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

您要查找的内容称为分页。这意味着您需要以较小的块逐渐加载数据。您需要加载一组30-40条消息,一条接一条。这个问题以前已经讨论过很多次了,这个问题已经为实时数据库提供了很多解决方案:

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

我也尝试过reference.limitToFirst(30(,但它读取了前30条消息,那么我该怎么办?我如何阅读接下来的30条信息?

我建议你看看其中的一些问题,然后试一试。如果您在实现它时遇到困难,那么向我们展示一个MCVE,其中包含您所尝试的内容,这样,我和其他Firebase开发人员可以帮助您。

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

  • 如何用Android对Firestore进行分页

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

如何使用JetpackCompose在Firestore中实现分页?

相关内容

最新更新