这是我的数据库的大致示例。
"userA": {
"uf": {
"userB": "0"
}
},
"users": {
"userA": "0",
"userB": "0",
"userC": "0"
}
这是我要编写的规则的粗略示例。
//USER ID
"$uid": {
//USER FRIENDS
"uf": {
//FRIEND USER ID
"$fuid": {
".write": "$uid === auth.uid &&
root.child('users').hasChild($fuid)",
}
},
},
这就是我要在模拟器中进行的工作
//Location /userA/uf/
//Data { "userC": "0" }
当数据键值对的“键”是我的规则中的变量(在本例中为“ $ fuid”)时,安全规则似乎总是拒绝写入。模拟器将返回消息“拒绝模拟集”和“拒绝写入”,但不会提供任何其他详细信息。我可以通过编写以下内容解决此问题。
//Simulation Method set
//Location /userA/uf/userC/
//Data { "0": "0" }
但是这感觉就像是在向我的数据库写入不必要的数据。最佳做法是什么?谢谢。
您的规则可以访问{uid}/uf/{fuid}
,但您正在尝试在{uid}/uf
处书写。
您不需要全部写{"0": "0"}
,只需在"0"
处写{uid}/uf/{fuid}
。