数据:
invitations:{
user1:{
group1: true
}
}
新数据:
connectedGroups:{
user1:{
group1: true
}
}
规则:
connectedGroups:{
".read": "auth != null",
"$newUser":{
".write": "auth.uid == $newUser &&//group in new data == group in invitations
}
}
我一直在努力研究如何比较这些键。它甚至可能还是我需要重构我的数据?
答案 0 :(得分:3)
使用parent
或child
的{{1}}和data
功能查找其他媒体资源:
newData
"connectedGroups": {
".read": "auth != null",
"$newUser": {
".write": "auth.uid == $newUser",
"$newGroup": {
".validate": "newData.val() == true && data.parent().child('invitations').child($newUser).child($newGroup) == true"
}
}
}
规则检查路径validate
是否已存在且包含/invitations/$newUser/$newGroup
(假设true
且invitations
都是顶级路径)< / p>
有关详细信息,请参阅the docs on Security & Rules。 使用Bolt(beta)可以更简单地编写这些路径查找和类型检查规则。