"RegisterRequests": {
"$uid": {
".write": "$uid === auth.uid && !root.child('Users').child(auth.uid).exists()",
".validate": "newData.hasChildren(['Nickname']) && newData.hasChildren(['Whatever'])",
"Nickname": {
".validate": "newData.val().length > 1 && newData.val().length < 17 && !root.child('Users').child('Nickname').child(newData.val()).exists() && !root.child('RegisterRequests').child('Nickname').child(newData.val()).exists()"
},
"Whatever": {
".validate": "newData.val() > 0 && newData.val() < 6"
},
"$other": { ".validate": false }
}
}
"Users": {
"$uid": {
".read": "$uid === auth.uid",
"Nickname": {
}
}
}
这些是我的数据库规则。我试图防止添加包含Users
或RegisterRequests
中已经存在的昵称的数据。我想我在这里失败:!root.child('Users').child('Nickname').child(newData.val()).exists() && !root.child('RegisterRequests').child('Nickname').child(newData.val()).exists()
因为Nickname
的价值不在于孩子。但是我不知道如何进行检查。另外我也不知道这是否是检查孩子的正确方法,因为我在此层次结构中缺少Identifier孩子。谁能帮我吗?