ios - Firebase 安全规则 : . indexOn 唯一 ID

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

我有这样的结构:

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

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

我试过这样做:

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

但我仍然收到此错误:

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

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

更新:

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

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

最佳答案

要查询给定键之一是否具有值 "true"(请注意,输入的数据结构是字符串,而不是 bool 值——需要注意的地方!)你'会想像这样创建安全规则:

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

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

关于ios - Firebase 安全规则 : . indexOn 唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37551951/

相关文章:

iphone - 处理导航栏按钮事件时应用程序崩溃

ios - 在核心数据中进行重量级迁移时尝试迁移 nil 属性值

ios - Urban Airship - 在 UA 服务器上注册的标签与设备上的 SDK 同步

swift - 如何将我的标签返回到它在 Swift 中的初始位置 (UIGestureRecognizer)

firebase - 在 Firebase Cloud Functions 中运行 Puppeteer 时遇到问题

swift - 将 firebase 数据库值转换为 Int

ios - Foursquare "Missing access credentials"用于使用客户端 ID 和客户端 key 进行 field 搜索

ios - 如何从通用链接获取 url?

Swift 3,Multipeer,将结构作为数据发送

node.js - 从 Fluent-Ffmpeg Api 调用 Ffmpeg 二进制文件时 Node 出现 ENOENT 错误