我的数据库结构如下:
flairs
|_____User1
| |__x: 1
| |__y: 1
| |__z: 1
|
|_____User2
|__x: 1
|__y: 1
|__z: 1
我想验证当用户更新他的x,y和z数据时,每个数据都是一个数字,并且他们都在某个范围内。我写了以下规则:
"flairs": {
"$user": {
".write": "auth != null",
".validate": "newData.hasChildren(['x','y','z']) &&
newData.child('x').isNumber() &&
newData.child('x').val() > -2 &&
newData.child('x').val() < 11 &&
newData.child('y').isNumber() &&
newData.child('y').val() > -2 &&
newData.child('y').val() < 8 &&
newData.child('z').isNumber() &&
newData.child('z').val() > 0 &&
newData.child('z').val() < 4"
}
}
基本上我检查新数据是否有x,y和z子项,并且它们是一定范围内的所有整数。但是,当我尝试在flairs/User1
中写入以下数据时,即使用户已通过身份验证,我也会拒绝写入:
{
"User1": {"x":1,"y":2,"z":1}
}
答案 0 :(得分:2)
您正在写信道/flairs/User1
并且您正在撰写:
{
"User1": {"x":1,"y":2,"z":1}
}
因此最终结果将是/flairs/User1/Users/x
等。根据您的规则无效。
你想写:
{"x":1,"y":2,"z":1}