Firebase安全规则 - .write的两组规则导致一个工作但不工作

时间:2017-12-05 06:15:09

标签: firebase firebase-security

我有一套安全规则,在.write中,我有多个规则,当我单独尝试时,它们工作正常,但当它们在一起时,一个工作,而另一个工作失败。 / p>

我有一个如下所示的安全规则:

"user_feeds": {
     "$userId": {
        ".indexOn": ["timestamp"],
        ".read": "auth != null",  
         "$postId" : {
           ".write": "auth != null && (root.child('social').child('user_band_follows').child($userId).hasChild(newData.child('band_id').val()) || root.child('social').child('user_band_follows').child($userId).hasChild(data.child('band_id').val()))"
           }
         }
       }

在我的$postId子树中,我正在尝试检查父节点是否有一个节点,该节点与正在插入的数据的band_id值相对应。

数据如下:

{
   post_id: 1,
   band_id: '-L-tyesfsdf13434',
   timestamp: 34234234234
}

这些规则对应的实际树看起来像:

{
   "user_feeds": {
     "userId1": {
        "-L-tyesfsdf13434": true
     }
   }
}

如果您将.write规则分开:

(root.child('social').child('user_band_follows').child($userId).hasChild(newData.child('band_id').val()) || root.child('social').child('user_band_follows').child($userId).hasChild(data.child('band_id').val())

^无论什么

,每次都有效

root.child('social').child('user_band_follows').child($userId).hasChild(data.child('band_id').val())

^这个失败了,除非它本身。

Firebase的含义是什么,这样的规则组合会导致成功/失败不一致?你会认为如果两者都能独立工作,它们也应该一起工作吗?

我能做些什么来确保它们都能正常工作并允许写入吗?

0 个答案:

没有答案