首页 > 解决方案 > 在 Firebase 实时数据库中为特定属性设置规则

问题描述

编辑:如果我将在任何子树或任何子树(包括规则根目录)中设置“.read”:“true”,这也将不起作用(这在示例中未显示)。

在我的应用程序中,它管理用户的婚礼详细信息,例如客人,我想让客人只在“邀请”字段存在时才写入“到达”字段(实际上如果它是真的,但我检查了它是否存在用于检测)。但是,我没有设法做到这一点,因为在 Firebase 控制台中,它说模拟集被拒绝:

模拟集被拒绝

Firebase 控制台中的规则:

{
 
  "rules": {
    "Users": {
      "$uid":{
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      },
      ".indexOn": "email"    
    },
    "Guests":{
      "$uid":{
        "$guest_id":{
          "arrive":{
            ".read": "$uid === auth.uid",
            ".write": "root.child('Guests/'+ $uid + '/' + $guest_id +'/invited').exists()"
          }
        }
          
      }
    }
    
  }
  
}

我在控制台的规则游乐场中编写的 JSON 示例:

{
  "Guests": {
    "user_1": {
      "guest_1": {
        "arrive": false,
        "invited": true
      }
    }
  }
}

规则游乐场中的位置路径:

/Guests/user_1/guest_1/arrive

我尝试了几种方法,但都没有奏效。例如:

".write": "data.parent().child('invited').exists()" 

或者

".write": "root.child('Guests').child($uid).child($guest_id).child('invited').exists()"

标签: firebase-realtime-databasefirebase-security

解决方案


推荐阅读