我正在我的应用程序中的用户之间挑战。我试图让最后15位参与挑战的用户。每当用户输入新挑战时,我都会存储时间。该查询在乞求中运行良好,但是此后它停止显示新用户,并且只显示旧用户。
这是查询代码:
usersReference.orderByChild("lastChallengeDate")
.limitToLast(15)
.addListenerForSingleValueEvent(new ValueEventListener()
这是用户子级的数据库结构:
当我打开日志时,尽管我在规则中使用了索引开,但我发现此警告
W / PersistentConnection:pc_0-使用未指定的索引。考虑在用户的安全性和Firebase数据库规则中添加'.indexOn':“ lastChallengeDate”'以获得更好的性能
答案 0 :(得分:1)
如果您对某个位置执行查询,则Firebase会在您指定的属性上对该位置下的子项进行排序。 lastChallengeDate
的每个子项正下方的users
中没有任何值。相反,该属性位于lastChallengeDate/time
下,因此您应该在该订单上订购
usersReference.orderByChild("lastChallengeDate/time")
.limitToLast(15)
.addListenerForSingleValueEvent(new ValueEventListener()
您还需要在users
(或您查询的节点的名称)上定义索引:
{
"rules": {
"users": {
".indexOn": "lastChallengeDate/time"
}
}
}
请务必同时学习: