Firebase安全子节点

Firebase安全子节点,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我在Firebase中有以下DB结构: [bets] -KTd9VKWJwHd_L6j_oAF date team1 etc -KTdCc7uVmueNtcYzU1m date team1 etc [users] 我现在正试图编写Firebase规则,允许用户只读取分配给他们的赌注。但我马上就遇到了问题。我有这些非常基本的规则: { "rules": {

我在Firebase中有以下DB结构:

    [bets]
      -KTd9VKWJwHd_L6j_oAF
        date
        team1
        etc
      -KTdCc7uVmueNtcYzU1m
        date
        team1
        etc
   [users]
我现在正试图编写Firebase规则,允许用户只读取分配给他们的赌注。但我马上就遇到了问题。我有这些非常基本的规则:

{
  "rules": {
    "bets": {
      "$bet": {
        ".read": true,
        ".write": true
      }
    }
  }
}
当我试图访问
/bets
(其中我显示了一个赌注列表)时,我被抛出错误:

Error: permission_denied at /bets: Client doesn't have permission to access the desired data.

如果我改为将
.read
.write
放在
bets
下而不是
$bet
下,则效果很好。我缺少什么?

Firebase在您附加侦听器的位置计算读取权限。您将侦听器附加到
/bets
,因此它会拒绝侦听器,因为您没有对
/bets
的读取权限

如果您拥有
/bets
的阅读权限,您还可以阅读其下的所有内容。因此,这意味着您不能使用Firebase数据库安全规则来筛选数据

请参阅Firebase文档中的部分。或者在这里搜索,你会发现这是开发人员常见的陷阱