Firebase安全规则:.indexOn唯一ID

leo*_*loo 8 ios firebase firebase-security swift firebase-realtime-database

我有这个结构:

"post": {
   "groupMember": {
     "-KHFHEHFWDB1213": "true",
     "-KSJHDDJISIS011": "true",
     "-KJSIO19229129k": "true"
   }
}
Run Code Online (Sandbox Code Playgroud)

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

我试过这样做:

"post": {
  ".indexOn": "groupMember"
  ...
}
Run Code Online (Sandbox Code Playgroud)

但我仍然收到这个错误:

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

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

更新:

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

postRef.queryOrderedByChild("groupMember/\(uid)").queryEqualToValue(true).observeEventType(.Value, ... )
Run Code Online (Sandbox Code Playgroud)

Mic*_*igh 1

要查询给定键之一是否具有值"true"(请注意,输入的数据结构是字符串,而不是布尔值——需要注意!),您需要创建如下安全规则:

{
  "post": {
    "groupMember": {
      "$memberId": {".indexOn": ".value"}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在路径queryOrderedByValue("true")上使用/post/groupMember。需要注意的是,$memberId在规则中,它声明了一个代表自动生成的 id 的通配符键,并且.value,这表明您不想在子属性上建立索引(如果您的结构有另一层嵌套),而是希望在直接叶节点值上建立索引。