Firebase数据库规则:从父级访问子级数据

时间:2016-09-08 18:36:22

标签: firebase firebase-realtime-database firebase-security

以下是对象列表的规则。如果您通过身份验证,则可以访问所有内容。如果没有,一些对象是公共的,一些不是(布尔公共属性)。 如果你试图直接访问对象,那么$ object的规则工作正常。

"list": {
  ".read": ???????????? ,
  ".write": "auth != null",
  "$object": {
    ".read": "auth != null || data.child('public').val() === true",
    ".write": "auth != null"
  }
}

但是如果你没有经过身份验证,我还需要规则来列出公共对象。如何在其父列表中为生成的$ key的属性设置读取规则?类似的东西:

"list":{
  ".read": "auth != null || data.child('$key').child('public').val() === true"
}

1 个答案:

答案 0 :(得分:3)

您不能通过.read

进行过滤

来自:https://firebase.google.com/docs/database/security/securing-data

  

规则不是过滤器

     

规则以原子方式应用。这意味着读或写   如果该位置没有规则,则操作立即失败   或者在授予访问权限的父级位置。即使每一个受到影响   子路径是可访问的,在父位置读取将失败   完全。