我在编写规则时遇到了麻烦,似乎无法以正确的方式接近它,我会很高兴看到它出现在哪里,看看我哪里出错了。
这是规则摘录
"customMaps": {
"$map":{
"admin": {
".read": true,
".write": "newData.child('owner').val() === auth.uid"
},
"lines": {
".read": true,
".write": "data.parent().child('admin/owner').val() === auth.uid || data.parent().child('admin/whitelist').child(auth.uid).exists()"
},
"markers": {
".read": true,
".write": "data.parent().child('admin/owner').val() === auth.uid || data.parent().child('admin/whitelist').child(auth.uid).exists()"
},
"labels": {
".read": true,
".write": "data.parent().child('admin/owner').val() === auth.uid || data.parent().child('admin/whitelist').child(auth.uid).exists()"
},
"users": {
".read":true,
".write":true
}
}
}
这是数据提交
database.ref("customMaps").push({
"admin":{
"map":mapname,
"title":maptitle,
"owner":uid
}
}).then((snap) => {
key = snap.key
database.ref("users/"+uid+"/maps/"+key).set({
"map":mapname,
"title":maptitle
});
});
当我创建一个新的地图(上面的函数)时,我得到权限被拒绝,如果我在customMap级别上设置为true,那么一切正常,所以我知道数据提交并使用正确的信息这样做,我只是看不出它出错了。
感谢您的时间。
供参考:
"$map":{
".read":true,
".write" : "newData.child('admin/owner').val() === auth.uid",
"admin": {
将上述写入规则添加到$ map中,因为我实际上并未授予推送数据的权限,只有管理数据。