用于更新现有数据的Firebase规则和验证

时间:2018-01-26 18:11:35

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

我的数据结构如下:

    {
     "users" : {
      "31J59dq1clZ3inHMzoopiigsEg63" : [ {
       "name" : "Lanchana",
       "timestamp" : 1516916245423,
       "uid" : "31J59dq1clZ3inHMzoopiigsEg63",
       "userEmail" : "*****@gmail.com",
       "total-stars" : 123
        } ]
      }
    }

并解雇如下规则:

    {
      "rules": {
        "users": {
          "$uid": {
            ".read": "$uid === auth.uid && auth != null",
            ".write": "!data.exists() || data.child('uid').val() == 
                       auth.uid && auth != null",
                }
         }
       }
    }

我可以成功添加新数据,但我无法对现有数据进行任何更新。例如:如果我只想根据uid更新特定用户的总星数,我该如何指定写入和验证规则?

1 个答案:

答案 0 :(得分:3)

您的数据结构似乎有一个规则中缺少的图层0。如果您的实际JSON中确实存在该图层,那么您也希望在规则中包含该图层:

{
  "rules": {
    "users": {
      "$uid": {
        "$postid": {
          ".read": "$uid === auth.uid && auth != null",
          ".write": "!data.exists() || data.child('uid').val() == 
                   auth.uid && auth != null",
        }
     }
   }
}

我在这里调用了图层$postid。您可能希望使用更能反映图层所代表内容的名称。