我在Firebase中编写规则时遇到问题
我的数据结构如下:
"permisos": {
"owners" : {
"$userId" : {
"$client" : true
}
}
}
"data" : {
"promotions" : {
"$promotion_key" : {
"property1:" : "some value"
"client" : "client name"
}
}
}
我在" data / promotions / $ promotion_key下编写规则。我想验证当前用户是否有权使用相应的属性客户端值(insert,update o delete)编写促销条目。到目前为止,我已经尝试了以下规则:
".write" : "root.child('permisos').child('owners').child(auth.uid).child(newData.child('client').val()).exists() || "root.child('permisos').child('owners').child(auth.uid).child(data.child('client').val()).exists()"
规则的第一部分检查插入,第二部分检查删除的尝试。
根据OR条款的顺序,我可以插入但在尝试删除时失败(权限被拒绝)或反之。似乎它没有评估||的两个部分。
我已经尝试了个人的每个条款,他们的工作正常。
答案 0 :(得分:0)
newData
对于删除行为不存在,因此您需要防范以避免规则的第一部分失败:
(
newData.exists() &&
root.child('permisos').child('owners').child(auth.uid).child(newData.child('client').val()).exists()
) ||
root.child('permisos').child('owners').child(auth.uid).child(data.child('client').val()).exists()