【问题标题】:Can't sort data from firebase realtime database by timeStamp无法按时间戳对 Firebase 实时数据库中的数据进行排序
【发布时间】:2019-05-04 05:42:15
【问题描述】:

我正在我的应用程序中的用户之间发起挑战。我试图让最后 15 名用户参与挑战。每次用户进入新挑战时,我都会存储时间。该查询在乞讨中运行良好,但之后它停止显示新用户,并且只显示旧用户。

这是查询代码:

 usersReference.orderByChild("lastChallengeDate")
            .limitToLast(15)
            .addListenerForSingleValueEvent(new ValueEventListener() 

这是用户孩子的数据库结构:

当我打开日志时,我发现了这个警告,尽管我在我的规则中使用了索引

W/PersistentConnection: pc_0 - 使用未指定的索引。考虑将 '".indexOn": "lastChallengeDate"' at users 添加到您的安全和 Firebase 数据库规则中以获得更好的性能

【问题讨论】:

    标签: android firebase firebase-realtime-database firebase-security


    【解决方案1】:

    如果您对某个位置执行查询,Firebase 会在您指定的属性上对该位置下的子项进行排序。在users 的每个子代的正下方lastChallengeDate 中没有任何值。相反,该物业位于lastChallengeDate/time 下,因此您应该订购该物业

    usersReference.orderByChild("lastChallengeDate/time")
            .limitToLast(15)
            .addListenerForSingleValueEvent(new ValueEventListener() 
    

    您还需要在users(或任何您查询的节点的名称)上定义一个索引:

    {
      "rules": {
        "users": {
          ".indexOn": "lastChallengeDate/time"
        }
      }
    }
    

    一定要学习:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多