Firebase 安全规则:.index使用唯一 ID



我有这个结构:

"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 ,它指示您希望在直接叶节点值上索引,而不是在子属性上编制索引(如果您的结构有另一层嵌套)。

最新更新