我有这个结构:
"post": {
"groupMember": {
"-KHFHEHFWDB1213": "true",
"-KSJHDDJISIS011": "true",
"-KJSIO19229129k": "true"
}
}
我想在自动生成的唯一组成员 ID 上 .index。
我尝试这样做:
"post": {
".indexOn": "groupMember"
...
}
但是我仍然收到此错误:
考虑在/post 添加 ".indexOn": "groupMember/-KHFHEHFWDB1213"
那么如何在唯一 id 上添加 .indexOn?
更新:
这是我使用的查询(在 Swift 中):
postRef.queryOrderedByChild("groupMember/(uid)").queryEqualToValue(true).observeEventType(.Value, ... )
要查询给定键之一是否具有值"true"
(请注意,键入时,您的数据结构是一个字符串,而不是布尔值 - 需要注意的东西!),您需要创建如下安全规则:
{
"post": {
"groupMember": {
"$memberId": {".indexOn": ".value"}
}
}
}
然后在/post/groupMember
路径上使用queryOrderedByValue("true")
。需要注意的是规则中的$memberId
,它声明了一个表示自动生成 id 的通配符键,以及 .value
,它指示您希望在直接叶节点值上索引,而不是在子属性上编制索引(如果您的结构有另一层嵌套)。