【问题标题】:Firebase .indexOn dynamic keysFirebase .indexOn 动态键
【发布时间】:2017-01-07 09:08:35
【问题描述】:

我已经开始测试 Firebase,但我无法弄清楚关于索引的一件事。我正在根据我读过的内容创建一个结构 - Firebase Data Structuring - 类似于用户和组的示例。 JSON 树看起来像这样:

{
  "babies" : {
    "-KQSVCXI-ZMz_lQ_Q906" : {
      "name" : "Baby",
      "parents" : {
        "F0o8Gr5GC2SrakUYZpC20efcmk63" : true
      }
    },
    "-KQSf4t9XQC3LnbsxLYS" : {
      "name" : "Name2",
      "parents" : {
        "S6aO6Dx4lgg6anW9S9hu7EJrhVg1" : true
      }
    }
  }
}

我正在尝试为父母生孩子 - 就像 Firebase 示例中的群组成员一样。我在 iOS 应用程序中使用:

self.babiesReference
                .queryOrderedByChild("parents/\(user.uid)")
                .queryEqualToValue(true)
                .observeSingleEventOfType(.Value, withBlock: { (snapshot) in
                
                // Print value
                print(snapshot.value)
                
            }

user.uid 是当前用户的 ID。这工作正常,但唯一剩下的问题是:

使用未指定的索引。考虑添加“.indexOn”: “父母/S6aO6Dx4lgg6anW9S9hu7EJrhVg1”在 /babies 到您的安全 提高性能的规则

如何索引这个由用户 ID 呈现的“动态”孩子?有没有办法或者我必须改变树结构?

谢谢。

【问题讨论】:

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

对于这种类型的查询(通常当您需要动态添加索引时),您可能需要设置倒排索引。在你的情况下:

{
  "babies" : {
    "-KQSVCXI-ZMz_lQ_Q906" : {
      "name" : "Baby",
      "parents" : {
        "F0o8Gr5GC2SrakUYZpC20efcmk63" : true
      }
    },
    "-KQSf4t9XQC3LnbsxLYS" : {
      "name" : "Name2",
      "parents" : {
        "S6aO6Dx4lgg6anW9S9hu7EJrhVg1" : true
      }
    }
  },
  "parents": {
    "F0o8Gr5GC2SrakUYZpC20efcmk63": {
      "babies": {
        "-KQSVCXI-ZMz_lQ_Q906": true
      }
    },
    "S6aO6Dx4lgg6anW9S9hu7EJrhVg1": {
      "babies": {
        "-KQSf4t9XQC3LnbsxLYS": true
      }
    }
  }
}

这种类型的双向链接在 Firebase(以及许多类似的 NoSQL 数据库)中相当常见。

【讨论】:

  • 好的,谢谢。但是在这种情况下如何设置“.indexOn”?
  • 由于您只是在此处访问键,因此不需要自定义索引(键会自动索引)。如果您仍然收到有关缺少上述结构的索引的警告,请显示您的查询代码和您收到的警告。
  • 谢谢弗兰克。我仍然要对此进行测试,但我确信这是使其工作的唯一正确方法。干杯
  • @FrankvanPuffelen indexOn 工作需要多长时间?我的意思是如果我将 indexOn 添加到现有数据中会立即起作用吗?或者我应该等几分钟直到建立索引?
  • 当您保存定义该索引的规则时,会立即创建索引。
猜你喜欢
  • 2020-08-03
  • 2017-07-19
  • 2016-01-17
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多