基于子值的 Firebase 实时规则访问父级
Firebase realtime rule access parent based on child value
关于firebase realtime rule的帖子很多,但还是解决不了我的问题。
这是我的数据。可能有多个“GId”或多个“User”或多个“caregiver”。
如果“caregiver”中存在特定值,我想授予对“GId”的访问权限。我的以下规则不起作用。
{
"rules": {
"GId": {
"$GId": {
".write": "data.child('User').child('caregiver').child('-N0Uy6K55bQlkPuuoioA').exists() ",
".read": "data.child('User').child('caregiver').child('-N0Uy6K55bQlkPuuoioA').exists()",
}
}
}
}
但是,如果我更改规则以在“用户”中存在特定值时授予对“GId”的访问权限,则它会起作用。
你能告诉我我的第一条规则有什么问题吗?
是否可以将其他“GId”访问权限授予另一个“GId”中的某些“用户”?
{
"rules": {
"GId": {
"$GId": {
".write": "data.child('User').child('6e42092aa73f47f48657fe7f3a9610c5').exists() ",
".read": "data.child('User').child('6e42092aa73f47f48657fe7f3a9610c5').exists() ",
}
}
}
}
当您 运行 查询实时数据库中的路径时,会检查您在查询 运行s.
在您的第二组规则中,您指定了您关心的 child 的完整路径,因此该规则可以找到 $GId
下 User/6e42092aa73f47f48657fe7f3a9610c5
处的节点.然而,在第一组规则中,6e42092aa73f47f48657fe7f3a9610c5
不在您查看的路径中,并且在 $GId
.
正下方的 User/caregiver/-N0Uy6K55bQlkPuuoioA
处没有节点
要使规则生效,您需要展平数据结构,并可能设置一个反向索引,以便您可以根据您做[=32]的信息查找是否允许访问=]知道。我还建议重新考虑 nesting of multiple data types in a single branch in your data structure, as it's a common antipattern and Firebase recommends keeping the data flat.
另见:
- Firebase Query Double Nested
关于firebase realtime rule的帖子很多,但还是解决不了我的问题。
这是我的数据。可能有多个“GId”或多个“User”或多个“caregiver”。
如果“caregiver”中存在特定值,我想授予对“GId”的访问权限。我的以下规则不起作用。
{
"rules": {
"GId": {
"$GId": {
".write": "data.child('User').child('caregiver').child('-N0Uy6K55bQlkPuuoioA').exists() ",
".read": "data.child('User').child('caregiver').child('-N0Uy6K55bQlkPuuoioA').exists()",
}
}
}
}
但是,如果我更改规则以在“用户”中存在特定值时授予对“GId”的访问权限,则它会起作用。 你能告诉我我的第一条规则有什么问题吗?
是否可以将其他“GId”访问权限授予另一个“GId”中的某些“用户”?
{
"rules": {
"GId": {
"$GId": {
".write": "data.child('User').child('6e42092aa73f47f48657fe7f3a9610c5').exists() ",
".read": "data.child('User').child('6e42092aa73f47f48657fe7f3a9610c5').exists() ",
}
}
}
}
当您 运行 查询实时数据库中的路径时,会检查您在查询 运行s.
在您的第二组规则中,您指定了您关心的 child 的完整路径,因此该规则可以找到 $GId
下 User/6e42092aa73f47f48657fe7f3a9610c5
处的节点.然而,在第一组规则中,6e42092aa73f47f48657fe7f3a9610c5
不在您查看的路径中,并且在 $GId
.
User/caregiver/-N0Uy6K55bQlkPuuoioA
处没有节点
要使规则生效,您需要展平数据结构,并可能设置一个反向索引,以便您可以根据您做[=32]的信息查找是否允许访问=]知道。我还建议重新考虑 nesting of multiple data types in a single branch in your data structure, as it's a common antipattern and Firebase recommends keeping the data flat.
另见:
- Firebase Query Double Nested