Firebase使用newData进行验证

时间:2015-11-19 03:23:12

标签: firebase

我正在通过这篇文章中关于如何构建数据的优秀示例工作,如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()"

1 个答案:

答案 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()"
          }
        }
      }
    }
  }
}