【问题标题】:Using .indexOn with nested nested keys in Firebase在 Firebase 中使用带有嵌套嵌套键的 .indexOn
【发布时间】:2020-11-21 08:18:43
【问题描述】:

我正在使用 Firebase PHP SDK 并试图找到一种方法来在嵌套的嵌套键 userId 上使用 .indexOn Firebase 规则,我想知道为什么我还没有做对。提前致谢。

我有一个名为“conversations”的表,第一级嵌套是用户 ID,然后第二级是键

conversations
-->user1
   -->key1
      -->userId
   -->key2
      -->userId
-->user2
   -->key1
      -->userId
   -->key2
      -->userId

以下是添加的 Firebase 规则,

{
"rules": {
  ".read": "auth != null",
  ".write": "auth != null",
  "conversations": {
        ".indexOn": ["user/key/userId"]
        }   
  }
}

在 PHP 级别,我试图检索数据但失败了,

$reference = $database->getReference('conversations/'.$request['userId'].'/')
                          ->orderByChild('userId')
                          ->equalTo('ABCD')
                          ->getValue();

【问题讨论】:

    标签: php firebase-realtime-database firebase-security


    【解决方案1】:

    需要在查询运行的 JSON 级别上定义索引。由于您在 /conversations/$uid 上运行查询,因此您也需要在此处定义 rhe 索引。

    所以:

    {
      "rules": {
        ".read": "auth != null",
        ".write": "auth != null",
        "conversations": {
          "$uid": {
            ".indexOn": ["userId"]
          }   
        }   
      }
    }
    

    请注意,我还更新了您的索引,以匹配您传递给 orderByChild 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多