读取具有规则限制的firebase实时数据库子集

读取具有规则限制的firebase实时数据库子集,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我有一个firebase实时数据库,其结构如下: { "USERS": { "user-1": { ... }, "user-2": { ... } } "GROUPS": { "group-1": { "id": "group-1", "AUTH": { "user-1": true, } }, "group-2": { "id": "group-2", "AUTH"

我有一个firebase实时数据库,其结构如下:

{
  "USERS": {
    "user-1": { ... },
    "user-2": { ... }
  }
  "GROUPS": {
    "group-1": {
      "id": "group-1",
      "AUTH": {
        "user-1": true,
      }
    },
    "group-2": {
      "id": "group-2",
      "AUTH": {
        "user-2": true
      }
    },
    "group-3": {
      "id": "group-3",
      "AUTH": {
        "user-1": true,
        "user-2": true
      }
    }
  }
}
{ 
  "rules": {
    "GROUPS": {
      "$groupId": {
        ".write": false,
        ".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
      }
    }
  }
}
我知道我可以授予仅属于特定组的用户读取权限,如下所示:

{
  "USERS": {
    "user-1": { ... },
    "user-2": { ... }
  }
  "GROUPS": {
    "group-1": {
      "id": "group-1",
      "AUTH": {
        "user-1": true,
      }
    },
    "group-2": {
      "id": "group-2",
      "AUTH": {
        "user-2": true
      }
    },
    "group-3": {
      "id": "group-3",
      "AUTH": {
        "user-1": true,
        "user-2": true
      }
    }
  }
}
{ 
  "rules": {
    "GROUPS": {
      "$groupId": {
        ".write": false,
        ".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
      }
    }
  }
}
我试图找到一个查询+规则组合,它将返回登录用户所属的所有组

例如: 登录“user-1”的查询和firebase规则更改返回以下内容的快照:

{
  "group-1": {
    "id": "group-1",
    "AUTH": {
      "user-1": true,
    }
  },
  "group-3": {
    "id": "group-3",
    "AUTH": {
      "user-1": true,
      "user-2": true
    }
  }
}

查询“GROUPS”引用现在给我一个“permissions denied”错误

将“.read=true”添加到组:

{ 
  "rules": {
    "GROUPS": {
      ".read": true,
      "$groupId": {
        ".write": false,
        ".read": "auth != null && data.child('AUTH').child(auth.uid).exists()"
      }
    }
  }
}
或通过条件的“.read”的任何组合,使每个人都可以访问所有数据

有没有一种方法(在当前结构中)通过向规则添加一些限制来查询数据库并从“GROUPS”分支获取我所属的所有组? 或者我需要在每个用户下维护他所属组的列表吗