Ios Firebase规则不';我不能正常工作
以下是我的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
-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上下文中称为“规则不是筛选器”,我建议签出:
- 关于
- 这个
- 许多