Firebase数据库规则。无法写入数据

时间:2018-09-07 12:18:35

标签: javascript firebase firebase-realtime-database firebase-security-rules

我是Firebase规则的新手。而且我无法将数据写入当前登录的用户节点。 我的数据库结构是

userdata: {
  profile: {
    Lp6Sj763bVUXlisPJyaLM3gbns73: {
      name: "sample"
      avatar: "sample.png",
      userid: "albdchalwe"
    },
    FRw6J6GWK6YbvhuaaHNzPtLRSHJ2: {
      name: "sample"
      avatar: "sample.png",
      userid: "calisdnca"
    }
  },
  additionaldata: {
    Lp6Sj763bVUXlisPJyaLM3gbns73: {
      notifications: {
        0: {
          notificationId: "cbawln"
          receviedon: 12212
        },
        1: {
          notificationId: "cbawln"
          receviedon: 12212
        }
      }
    },
    FRw6J6GWK6YbvhuaaHNzPtLRSHJ2: {
      notifications: {
        0: {
          notificationId: "cbawln"
          receviedon: 12212
        },
        1: {
          notificationId: "cbawln"
          receviedon: 12212
        }
      }
    }
  }

,并想授予对与当前登录用户有关的节点的写访问权限。我的数据库规则是

{
  rules: {
    userdata: {
     profile: {
       .read: "auth != null",
       .indexOn: ["name"]
       $userId: {
         avatar: {
           .write: "$userId == auth.uid"
         },
         avatar: {
           .write: "$userId == auth.uid"
         }
         userid: {
           .write: "$userId == auth.uid && !data.exists()"
         }
       }
     }
   }
 }
配置文件下的

用户节点包含更多节点。我只是在用户节点上添加了3个子节点,以了解其结构。立即保留其他数据节点。

我的问题是无法将数据写入配置文件节点。当我在模拟器上运行它时,我得到以下信息,

[enter image description here

enter image description here enter image description here

谁能帮我解决这个问题。预先感谢。

1 个答案:

答案 0 :(得分:1)

是因为您正在写/userdata/profile/$uid而不是定义/userdata/profile/$uid/avatar的{​​{1}}吗? (在您的示例中也有重复)