带有firebase规则的addChildEventListener混淆

时间:2017-11-16 14:04:20

标签: android firebase firebase-realtime-database

我的firebase数据库有一个名为Messages的子项,它有子user_id,还有子标题和时间戳,如:

  • 我的firebase数据库

    • 消息
      • user_uid_1
        • 标题
        • 时间戳
      • user_uid_2
      • user_uid_3
      • ...

我想为Messages添加addChildEventListener以确定Messages中是否有任何更改。使用此代码非常简单:

myRef.child("Messages").addChildEventListener(new ChildEventListener()...

firebase规则如何?如果我把它公之于众就行了。但如果我确实喜欢那个儿童听众不工作我应该加入什么样的规则

{
  "rules": {    
   "Messages":{
       "$uid":{
            ".read": "data.child('timestamp').val() > (now - 18000000)",
            ".write": "auth != null"
   }
  },
   "$other":{
     ".read": true,
     ".write": "auth != null"
   }  
}
}

我想只阅读最近30分钟内的消息,因此我已添加“。read”:“data.child('timestamp')。val()>(现在 - 18000000 )”,

我想我应该在“Messages”和“$ uid”之间添加一些东西来正确地添加儿童听众。 thnks!

1 个答案:

答案 0 :(得分:1)

附加侦听器时会强制执行Firebase安全规则。如果您允许/Messages/$uid上的读取,那么/Messages上的听众将被拒绝,因为您没有该级别的读取权限。

这在Firebase文档中称为rules are not filters,表示您无法使用安全规则来过滤数据。它已经在Stack Overflow上有很多内容,所以我建议你查看一些previous questions。我能找到的最早的答案是this one