我尝试在 Firebase 实时数据库 中制定规则。所以,如果
.write
只有这两个孩子,即 newData
和 data1
,我想允许 data1
。
{
"rules": {
".read" : false,
"$user": {
".read": true,
".write": "newData.hasChildren(['data1', 'data2']) && !newData.hasChild('other')"
}
}
}
成功不允许没有
newData
的 ['data1', 'data2']
。但问题是,它也将允许每个数据同时具有 ['data1', 'data2']
和更多其他子项。在这部分规则中,您可以看到!newData.hasChild('other')
我尝试选择任何其他孩子作为other
而没有$
标记,结果证明它不起作用
您的规则仅拒绝写入名为
other
的子项,这不是您要实现的用例。
要仅允许写入
data1
和 data2
,您需要更深一层地定义规则:
{
"rules": {
".read" : false,
"$user": {
".read": true,
".write": "newData.hasChildren(['data1', 'data2'])",
"data1": { ".validate": true },
"data2": { ".validate": true },
"$other": { ".validate": false }
}
}
}
因此,现在
data1
和 data2
子项被视为有效,但任何其他子项(如 $other
规则所示)均无效/被拒绝。