Ios Firebase规则不';我不能正常工作

Ios Firebase规则不';我不能正常工作,ios,firebase,firebase-realtime-database,firebase-security,Ios,Firebase,Firebase Realtime Database,Firebase Security,以下是我的firebase结构: -posts -public -countryCode -US -KeJ9qrPZYWD-b0AdQ3I -timestamp:1488544558698 -postAuthor:TT4l2xyIOFRXI3RZINffcSFs67O2 -KeAVVwWQ-OuwyMRycI4 -timestamp:1488544595373 -postAuthor:TT4l2xyIOFRXI3RZINffcS

以下是我的firebase结构:

-posts
 -public
  -countryCode
   -US
    -KeJ9qrPZYWD-b0AdQ3I
     -timestamp:1488544558698
     -postAuthor:TT4l2xyIOFRXI3RZINffcSFs67O2
    -KeAVVwWQ-OuwyMRycI4
     -timestamp:1488544595373
     -postAuthor:TT4l2xyIOFRXI3RZINffcSFs67O2
-users
 -TT4l2xyIOFRXI3RZINffcSFs67O2
我希望允许用户阅读过去24小时的帖子,或者如果用户是帖子的作者,那么没有限制,因此我制定了firebase规则如下:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    },
    "posts":{
      ".write" : "auth != null",
      "public":{
        "countryCode":{
         "$countryCode_id":{
           "$post" :{
            ".read" : data.child('postAuthor').val() === auth.uid || data.child('timestamp').val() > (now - 86400000)
          }  
      }
  }
 }
}  
  }
} 
但它不起作用,我可以写新的,但不能阅读任何东西,即使帖子是在指定的时间或由当前作者,有什么不对

编辑:
好的,我发现了规则中的规则:“规则不是过滤器”,它稍微破坏了我的想法,因为我需要阅读我帖子的家长,但若我将其标记为“阅读”,我的帖子将被阅读,无论作者是什么,时间是什么,这是级联的原因-如此令人沮丧:(,所以现在我需要考虑如何做到这一点。我的第一个想法是创建另一个包含所有帖子的路径,并从那里获取所有帖子,其中所有帖子都将标记为read:true,然后使用observesingleevent(.value)进行标记拿着每一篇文章的钥匙,直接观察另一个分支上的当前文章,在那里我可以设置我的读写权限,我觉得好吗?

没有看到导致问题的代码,这很难确定。但很可能你是在尝试从没有读权限的级别进行阅读。例如:

ref = FIRDatabase.database().reference("/posts/public/countryCode/US")
query = ref.queryOrdered(byChild: "postAuthor").queryEqual(toValue: "TT4l2xyIOFRXI3RZINffcSFs67O2")
query.observeEventType(.Value, withBlock: { snapshot in
    ...
此查询将失败,因为用户没有对
/posts/public/countryCode/US
的读取权限。与您可能认为的相反,Firebase查询无法用于筛选数据。这在Firebase上下文中称为“规则不是筛选器”,我建议签出:

  • 关于
  • 这个
  • 许多

是的,我已经弄明白了,我编辑了我的帖子,你能看看我是否在那里吗?从你的编辑看来,你需要阅读网站上的文档