Firebase orderByChild安全规则

Firebase orderByChild安全规则,firebase,firebase-security,Firebase,Firebase Security,给定带有恐龙示例的firebase设置,我想为.read添加一个安全规则。如果在如下层次结构中添加.read:true,查询将无法提供任何结果 { "rules": { "dinosaurs": { "$dino": { ".read":true } } } } 如果我使用以下查询,那么查询将按预期工作 { "rules": { "dinosaurs": { ".read":true } }

给定带有恐龙示例的firebase设置,我想为.read添加一个安全规则。如果在如下层次结构中添加.read:true,查询将无法提供任何结果

{
  "rules": {
    "dinosaurs": {
      "$dino": {
        ".read":true
      }
    }
  }
}
如果我使用以下查询,那么查询将按预期工作

{
  "rules": {
    "dinosaurs": {
        ".read":true
    }
  }
}

对于我的用例,我需要一个更像第一个示例的设置,以便在允许读取该项之前检查每个项的条件。然而,要使用新的orderByChild(“property”)样式的查询,我似乎必须允许访问整个子树。是这样吗?

是这样的,蒂姆。要进行搜索,必须有权迭代/列出数据,以便找到正确的结果。一种方法是将可搜索数据与您不希望用户访问的数据分开存储。然后,您可以获取记录列表并访问私有数据。我意识到有点痛苦。建议将上述评论转化为答案……当执行
orderByChild('property')。equalTo('value')
时,我认为用户(A)对所有记录都具有“property”子项的读取权限,并且(b)对匹配记录(不一定是所有记录)具有读取权限就足够了。(理由:扫描和过滤发生在服务器上;用户从未访问过数据。)有没有什么特别的原因导致情况并非如此?这样会方便得多……而且,我希望官方文件中能更清楚地说明这一点(@Kato)