Firebase安全规则:.indexOn唯一ID

时间:2016-05-31 17:19:51

标签: ios swift firebase firebase-realtime-database firebase-security

我有这个结构:

"post": {
   "groupMember": {
     "-KHFHEHFWDB1213": "true",
     "-KSJHDDJISIS011": "true",
     "-KJSIO19229129k": "true"
   }
}

我想.indexOn自动生成的唯一groupMember ID。

我试过这样做:

"post": {
  ".indexOn": "groupMember"
  ...
}

但我仍然收到此错误:

考虑添加" .indexOn":" groupMember / -KHFHEHFWDB1213"在/后

那么如何在唯一ID上添加.indexOn?

更新

这是我使用的查询(在Swift中):

postRef.queryOrderedByChild("groupMember/\(uid)").queryEqualToValue(true).observeEventType(.Value, ... )

1 个答案:

答案 0 :(得分:1)

要查询其中一个给定键是否具有值"true"(请注意,键入的数据结构是字符串,而不是布尔值 - 需要注意的东西!)您需要创建像这样的安全规则:

{
  "post": {
    "groupMember": {
      "$memberId": {".indexOn": ".value"}
    }
  }
}

然后在queryOrderedByValue("true")路径上使用/post/groupMember。需要注意的重要事项是规则中的$memberId,它声明了表示自动生成的id的通配符键,.value表示不是对子属性进行索引(如果你的结构有另一层嵌套)您想要在即时叶节点值上建立索引。