我的数据库:
{ "user" :
"$userID": {
"name" : "Anon",
"age" : 99
}
}
如果客户端意外发送了错误数据但有一些有效数据,是否有办法仅使用有效数据更新服务器?
例如,
user1.updateChildValues(["name" : "John Snow", "age" : 30, "BADKEY" : "BAD DATA"])
我希望上述更新尝试起作用,但只能使用数据库安全规则在上述情况下使用["name" : "John Snow", "age" : 30]
更新数据库。有没有办法做到这一点?
答案 0 :(得分:1)
听起来您想在数据结构上强制执行架构。您可以通过验证属性(并拒绝不匹配的属性)在安全规则中执行此操作:
{ "user" :
"$userID": {
".validate": "newData.hasChildren('name', 'age')",
"name": {
".validate": "newData.isString()"
},
"age" : {
".validate": "newData.isNumber()"
},
"$other": {
".validate": false
}
}
}
这里的$other
规则匹配任何未被更明确的规则匹配的子项,然后拒绝它们。