【问题标题】:Firebase limitToLast QueryFirebase limitToLast 查询
【发布时间】:2017-02-09 07:45:08
【问题描述】:

我的问题可能很愚蠢,我已经阅读了文档,但还没有解决我的问题。当我使用 limitToLast 获取最后 15 条消息(假设从 5-20 条消息)并且如果我删除第 20 条消息时,childListener 会返回这样的消息(5-6-7-8-9-10-11-12- 13-14-15-16-17-18-19-4)...如您所见,最后一项是数字 4。 代码是这样的:
messagesListener = FBMessagesRef.limitToLast(15).addChildEventListener(new ChildEventListener(),我怎样才能修复它并且没有得到第 4 项

【问题讨论】:

  • 如果当前答案对您没有帮助,请编辑您的问题以包含 minimal code that reproduces the problem。目前我们无法知道您的ChildEventListener 是如何实现的,这可能是问题的一部分。
  • 我也有同样的问题。有什么解决办法吗?

标签: android firebase firebase-realtime-database listener


【解决方案1】:

由于您在将值设置为 15 时会获取最后 15 位数字,因此请将 limitToLast 值更改为 -1 以获取最后一个 Firebase 值。 将您的代码更改为以下 sn-p。

messagesListener = FBMessagesRef.limitToLast(-1).addChildEventListener(new ChildEventListener(),

【讨论】:

    【解决方案2】:

    Firebase 官方文档说,如果限制值小于数据库中的项目数,那么它将读取数据库中的所有项目。我猜很清楚。

    limitToLast(limit) 返回 firebase.database.Query

    生成一个新的 Query 对象,限制为最后一个特定数量的 孩子们。

    limitToLast() 方法用于设置最大子节点数 为给定的回调同步。如果我们将限制设置为 100,我们将 最初最多只能接收 100 个 child_added 事件。 如果我们少了 超过 100 条消息存储在我们的数据库中,child_added 事件将 为每条消息触发。但是,如果我们有超过 100 条消息,我们将 仅接收最后 100 条有序消息的 child_added 事件。作为 项目发生变化,我们将收到每个项目的 child_removed 事件 退出活动列表,因此总数保持在 100。

    【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多