如何限制Firebase实时数据库仅允许特定子键的.write权限
解决Firebase实时数据库仅允许指定子节点写入的规则问题
你的问题出在!newData.hasChild('other')只能拦截名为other的特定子节点,没法阻止其他任意名称的额外子节点。要实现仅允许存在data1和data2两个子节点的要求,需要同时验证两点:
- 必须包含指定的两个子节点
- 子节点的总数恰好是2(确保没有额外节点)
修改后的规则如下:
{ "rules": { ".read" : false, "$user": { ".read": true, ".write": "newData.hasChildren(['data1', 'data2']) && newData.numChildren() == 2" } } }
规则说明:
newData.hasChildren(['data1', 'data2']):确保写入的数据必须包含data1和data2这两个子节点,缺一不可newData.numChildren() == 2:限制写入的数据只能有2个子节点,结合上面的条件,就保证了只能是data1和data2,不会有其他额外节点
这样就能完全满足你“仅允许newData包含data1和data2”的写入要求了。
内容的提问来源于stack exchange,提问作者Dzadafa
相关产品推荐
相关产品推荐

