我在Firebase中有这个数据库结构:
[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
下,则可以正常使用。我错过了什么?
答案 0 :(得分:3)
Firebase会评估您附加侦听器的位置的读取权限。您将监听器附加到/bets
,因此您拒绝监听器,因为您没有/bets
的读取权限。
如果您拥有/bets
的读取权限,您还可以阅读其下的所有内容。因此,这意味着您无法使用Firebase数据库安全规则来过滤数据。
请参阅Firebase文档中的rules are not filters部分。或者在这里搜索Firebase questions mentioning "rules are not filters",你会发现这是开发人员常见的陷阱。