要为新数据添加规则,我使用的是.validate和newData。当我添加新数据时,此规则正常工作。但是,当我在现有位置更新数据时,规则不起作用。请帮忙。以下是规则集:
{
"rules": {
".read": true,
".write": true,
"User":{".validate":"newData.child('weight').isNumber() && newData.child('weight').val()>=1 && newData.child('weight').val()<=300"}
}
}
您应该执行以下操作
{
"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”因此不起作用
对不起英语