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数据库规则:can';无法写入数据库_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Firebase数据库规则:can';无法写入数据库

Firebase数据库规则:can';无法写入数据库,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我试图设定一些重要的任务,但我无法解决我的问题。我被告知,如果我向房间添加写入规则,那么我将覆盖我的房间/$roomID/ingame规则 我想做的是 由身份验证用户创建文件室。 仅由文件室的创建者设置/更新文件室的ingame。(行得通) 规则: { "rules": { ".read": true, "user": { ".indexOn": "displayname" }, "room": { "$roomID": {

我试图设定一些重要的任务,但我无法解决我的问题。我被告知,如果我向房间添加写入规则,那么我将覆盖我的房间/$roomID/ingame规则

我想做的是

由身份验证用户创建文件室。 仅由文件室的创建者设置/更新文件室的ingame。(行得通)

规则

{
  "rules": {
    ".read": true,
    "user": {
      ".indexOn": "displayname"
    },
    "room": {
      "$roomID": {
        "ingame":{
            ".write": "data.parent().child('creatorUid').val() == auth.uid"
        }
      }
    }
  }
}
let user = firebase.auth().currentUser
dbRoomRef.push().then((room) => {
    room.set({
        creatorUid: user.uid,
            ingame: false,
        })
    }).catch(function(err) {
        console.log(err.message)
    }
)
如何调用以创建新房间

{
  "rules": {
    ".read": true,
    "user": {
      ".indexOn": "displayname"
    },
    "room": {
      "$roomID": {
        "ingame":{
            ".write": "data.parent().child('creatorUid').val() == auth.uid"
        }
      }
    }
  }
}
let user = firebase.auth().currentUser
dbRoomRef.push().then((room) => {
    room.set({
        creatorUid: user.uid,
            ingame: false,
        })
    }).catch(function(err) {
        console.log(err.message)
    }
)
错误消息(如预期):

FIREBASE警告:设置为/room/-L572bnuRv0\u vntko-Bd失败:权限被拒绝


谢谢。

错误消息说您正在尝试写入
/room/-L572bnuRv0_vntko-Bd
,没有写入权限。这是正确的,因为您的规则只允许写入
/room/-L572bnuRv0_vntko-Bd/ingame

如果在创建文件室时已设置了
creatorUid
,则不必将其包含在write语句中,只需执行以下操作即可:

room.child("ingame").set(false);
如果您试图允许每个人创建一个新房间(或写入现有房间),只要他们是所有者,您需要将规则设置得更高一级:

"room": {
  "$roomID": {
    ".write": "newData.child('creatorUid').val() == auth.uid"
  }
}

谢谢你,弗兰克!这就是我要找的。我得到了它。祝您有个美好的一天。