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

如何根据Firebase数据库中的项目数筛选数据

沃弘图
2023-03-14

我正在编写一个android聊天应用程序,并试图使用自定义FirebaceRecyclerAdapter在RecyRCleView中使用Firebase数据库实现无休止的滚动。对于第一个消息加载,我使用对数据排序的查询从Firebase数据库获取数据。orderByChild()和。limitToFirst(specificCount)到目前为止还不错。但当用户滚动到最后一个可见项时,我必须获取消息的下一部分,而问题是,在specificCount之后,我无法直接从Firebase数据库获取消息。我试过使用该代码:

  int startCount = mLayoutManager.getItemCount();
                FirebaseDatabase
                        .getInstance()
                        .getReference()
                        .child(RequestParameters.FB_CHILD_MESSAGES)
                        .orderByChild(RequestParameters.FB_CHILD_MESSAGES_ORDERING_TIME)
                        .startAt(startCount)
                        .endAt(startCount + CustomFirebaceRecyclerAdapter.NEXT_MESSAGE_PORTION_COUNT)
                        .addListenerForSingleValueEvent(...)

但是在我阅读了. start At()的留档后,我意识到这是多么愚蠢。任何人都可以帮助进行查询,在专用计数之后获取项目,并将接收到的消息限制为某些计数。

共有1个答案

金慈
2023-03-14

我很确定我不到一天前就回答了这个问题,所以我建议扫描一下我的答案。但我要重复一遍。

Firebase数据库API本质上不太适合分页。想一想当用户在第1页(前十个项目)上插入一个项目时会发生什么。他们最终会在第2页的开头看到前面的第10项,但永远不会看到新插入的项目。

也就是说,如果您想进行分页,在技术上是可能的。但您不必想跳过10个项目,而是必须告诉Firebase从上一页的最后一项开始查询。这称为锚项,在代码中如下所示:

FirebaseDatabase
        .getInstance()
        .getReference()
        .child(RequestParameters.FB_CHILD_MESSAGES)
        .orderByChild(RequestParameters.FB_CHILD_MESSAGES_ORDERING_TIME)
        .startAt(timeOfLastItemOnPreviousPage, keyOfLastItemOnPreviousPage)
        .addListenerForSingleValueEvent(...)

这里的关键属性是:

>

上一页最后一项的键(如果FB\u CHILD\u MESSAGES\u ORDERING\u TIME有多个值相同的项,则需要该键

 类似资料:
  • 我在Python中使用一个视频游戏的熊猫DataFrame,每个游戏都有一种类型。我正在尝试删除任何在DataFrame中出现次数少于一定次数的类型的视频游戏,但我不知道该怎么做。我确实发现了一个StackOverflow问题,这个问题似乎是相关的,但我根本无法破译这个解决方案(可能是因为我从未听说过R,而且我对函数编程的记忆充其量也很生疏)。 帮助?

  • 我试图创建一个简单的程序,从用户的名字,手机号码和电子邮件地址,然后把数据在Firebase实时数据库。 有3个输入框和一个按钮,按一下就可以完成上面的操作。代码如下: 我这样设置了消防基地:

  • 我有一个餐厅模型: 具有与Order的hasMany关系。 我想做的是在一些日期之间得到餐厅的订单。 这是我试过的,但并不好。换句话说,我想通过一些参数来过滤一个模型的关系。

  • 我无法在Firebase实时数据库中添加任何数据。数据库连接正常,但我无法添加任何数据。当我单击“到”按钮时,添加到数据库中的数据。 主要活动。java-代码 事件。java-代码

  • 我正在尝试使用Firebase Cloud功能为iOS应用程序创建设备到设备推送通知。每当在数据库中的引用'/user-通知/{通知RecipientUid}/{挑战ID}'处创建新子节点时,我都想触发一个事件。这是我的index.js代码: 当在该位置的数据库中添加新的子数据库时,我收到此错误,“类型错误:函数.数据库.ref(...)。一次不是一个函数“,在 Firebase 控制台的函数日志

  • 我正在开发一个社交网络应用程序,用户可以关注其他用户,喜欢他们的帖子、评论。。。当某个用户跟踪某人时,它会在另一个用户帐户的通知片段中显示,通知他有一个新的跟踪者。问题是,当用户点击unfollow时,我无法删除通知。以下是我尝试过的: 下面是我添加通知的方式: 我的代码的问题是,每当用户取消关注某人时,该用户的所有通知都会被删除,包括他的喜欢和评论。我想要的是删除“开始关注你”。以下是它在Fir