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

问题描述 投票:0回答:1

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

{
  "rules": {
    ".read": true,
    ".write": true,
    "User":{".validate":"newData.child('weight').isNumber() && newData.child('weight').val()>=1 && newData.child('weight').val()<=300"}
  }
}
firebase firebase-realtime-database firebase-security
1个回答
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
}

新数据

{
    "height" : 100
}

实际上newData [合并数据]

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

“。validate”因此不起作用

对不起英语

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.