Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase使用新数据进行验证_Firebase - Fatal编程技术网

Firebase使用新数据进行验证

Firebase使用新数据进行验证,firebase,Firebase,我正在研究一个关于如何构建数据的优秀示例,如加藤在本文中所示: 我一点运气都没有,无法正常工作 数据结构是: accepted_invites game1 desc "fun game" invites game1 uuidAAA true uuidBBB true 下面是一个屏幕截图: 如果我试着写下 ref.child("accepted_invites").child("game1").child("

我正在研究一个关于如何构建数据的优秀示例,如加藤在本文中所示:

我一点运气都没有,无法正常工作

数据结构是:

accepted_invites
    game1
       desc  "fun game"

 invites
     game1
       uuidAAA    true
       uuidBBB    true
下面是一个屏幕截图:

如果我试着写下

   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()"
我试着使用模拟器,但我得到了 类型错误:+仅对数字和字符串进行操作

以下是我掌握的完整规则:

{
  "rules": {   
    ".write" : true,
    ".read" : true,
  "accepted_invites": {
    "$game_id": {
      "$user_id": {
        //This validate rule fails  
        //".validate": "root.child('invites/'+$game_id+'/'+newData.val()).exists()"
        //This one works
        ".validate": "root.child('invites/'+$game_id+'/uuidBBB').exists()"
      }
    }
  }
}
}

newData
关键字是引用所有传入数据的特殊属性,但不允许在路径表达式中使用,因为它可能不是字符串。i、 它很可能是一个物体

如果您对在路径中使用该数据的某些部分感兴趣,我建议只在更深的路径中包含另一个验证规则,例如:

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

newData
关键字是引用所有传入数据的特殊属性,但不允许在路径表达式中使用,因为它可能不是字符串。i、 它很可能是一个物体

如果您对在路径中使用该数据的某些部分感兴趣,我建议只在更深的路径中包含另一个验证规则,例如:

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

谢谢罗布,这对我来说起作用了,规则对我来说更有意义了。谢谢罗布,这对我来说起作用了,规则对我来说现在更有意义了。