如何添加firebase规则以更新数据?

时间:2016-06-01 06:31:38

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

要为新数据添加规则,我使用的是.validate和newData。当我添加新数据时,此规则正常工作。 但是,当我在现有位置更新数据时,规则不起作用。 请帮忙。 以下是规则集:

{
  "rules": {
    ".read": true,
    ".write": true,
    "User":{".validate":"newData.child('weight').isNumber() && newData.child('weight').val()>=1 && newData.child('weight').val()<=300"}
  }
}

1 个答案:

答案 0 :(得分:1)

您应该执行以下操作

{
  "rules": {
    ".read": true,
    ".write": true,
    "User":{
            "width" : {
                ".validate":"newData.child('weight').isNumber() && newData.child('weight').val()>=1 && newData.child('weight').val()<=300",
            },
            "$other" : {
                ".validate":false
                }
            }
  }
}

如果我们查看文档

https://firebase.google.com/docs/database/security/securing-data#existing_data_vs_new_data

  

预定义数据变量用于在执行写入操作之前引用数据。相反,newData变量包含写操作成功时将存在的新数据。 newData表示正在写入的新数据和现有数据的合并结果。

如果已经注册了数据

{
    "width" : 50
}

newData

{
    "height" : 100
}

实际上是newData [合并数据]

{
    "width" : 50,
    "height" : 100
}

&#34; .validate&#34;由于这个原因不起作用

抱歉英语