【发布时间】:2018-06-21 09:55:02
【问题描述】:
我需要设置数据库规则以防止某些子节点被误删除,但同时允许添加和修改子节点。有问题的节点是users/[userID]。它的结构是这样的:
我不想删除users/[userID]/soundcasts 中的数据。我目前的规则如下所示:
"users": {
".read": true,
".indexOn": "stripe_id",
"$userID": {
".indexOn": "0",
"soundcasts": {
".indexOn": "planID",
".write": "newData.exists() && auth != null",
"$soundcastID": {
".write": "newData.exists() && auth != null",
}
},
}
},
这成功地完成了我想要的,即将users/[userID]/soundcasts 设置为null 总是失败。但是,由于users 节点本身没有 .write 规则,我无法向该节点添加新用户:(
但如果我在users 节点或users/[userID] 节点上设置".write": "newData.exists() && auth != null",如下所示:
"users": {
".read": true,
".indexOn": "stripe_id",
"$userID": {
".indexOn": "0",
".write": "newData.exists() && auth != null",
"soundcasts": {
".indexOn": "planID",
".write": "newData.exists() && auth != null",
"$soundcastID": {
".write": "newData.exists() && auth != null",
}
},
}
},
可以将users/[userID]/soundcasts 子节点设置为null。我不确定为什么会这样。
我需要设置规则,以便我可以向users节点添加新用户,修改users/[userID]下的任何子节点数据,但防止users/[userID]/soundcasts被设置为null。
这可能吗?
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security