我正在通过这篇文章中关于如何构建数据的优秀示例工作,如Kato所示: Firebase user account security with firebaseSimpleLogin
我没有运气得到验证才能正常工作。
数据结构是:
GET myindex/profile/_mapping
这是一个屏幕截图: Firebase data
如果我尝试编写以下内容
accepted_invites
game1
desc "fun game"
invites
game1
uuidAAA true
uuidBBB true
它将使用此规则在accepted_invites中输入一个条目:
ref.child("accepted_invites").child("game1").child("userTwo").child("uuidBBB").setValue(true);
但不是
".validate": "root.child('invites/'+$game_id+'/uuidBBB').exists()"
我尝试使用模拟器,但我得到了 类型错误:+仅对数字和字符串进行操作。
以下是完整的规则:
".validate": "root.child('invites/'+$game_id+'/'+newData.val()).exists()"
答案 0 :(得分:0)
newData
关键字是一个引用所有传入数据的特殊属性,但 path 表达式中不允许这样做,因为它可能不是字符串。也就是说,它很可能是一个物体。
如果您对在路径中使用某些部分数据感兴趣,我建议您在更深的路径中包含其他验证规则,例如:
{
"rules": {
".write" : true,
".read" : true,
"accepted_invites": {
"$game_id": {
"$accepting_user_id": {
"$sending_user_id": {
".validate": "root.child('invites').child($game_id).child($sending_user_id).exists()"
}
}
}
}
}
}