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