gpt4 book ai didi

Firebase:permission_denied - 无法访问newData.child()

转载 作者:行者123 更新时间:2023-12-02 19:15:23 26 4
gpt4 key购买 nike

这是我的数据结构

{
"projects" : {
"proj1" : {
"-JccS4StrTnJdTficR-u" : {
"name" : "consultation",
"status" : false
},
"-Jd6JlJUfyyZ2U0NTQEs" : {
"name" : "Words",
"status" : false
}
},
"proj2" : {
"-JccS6nwYHRrxvjZtCkt" : {
"name" : "Rework",
"status" : false
},
"-Jd6Jqa7-EPJuWxbtJAV" : {
"name" : "Review",
"status" : false
}
},
"proj3" : {
"-JccSJ5lEBQEg3XCbG-u" : {
"name" : "translation",
"status" : false
}
}
}
}

这是我的规则

{
"rules": {
".read": true,
"projects": {
"proj1": {
".write": "auth != null"
},
"proj2": {
".write": true
},
"proj3": {
".write": true,
".validate": "newData.child('name').isString()
&& newData.child('name').val().length < 10"
}
}
}
}

当我创建数据库时,没有规则。现在,我已经制定了规则。我希望名称的长度少于 10 个字符。

当我运行代码时,出现以下错误:FIREBASE 警告:在/projects/proj3/-Jd4n6XditTHLWKVmhC6 处设置失败:permission_denied

我无法确切地说出为什么它不起作用。我也尝试过这部分 newData.child('name').isString(),但我仍然遇到相同的错误。

这是将数据推送到 FireBase 的代码

function saveToFB(taskName, proj) { 
// this will save data to Firebase
var project=projTasks.child(proj);
project.push({
name: taskName,
status: false
});
};

最佳答案

查看数据结构以及规则,“proj1”/“proj2”/“proj3”与具有 name 的对象之间似乎缺少数据级别。和status属性。

具体来说,.validate您配置的规则正在检查 name 的长度“proj3”的属性,而不是添加到列表中的新元素。

要解决此问题,请尝试增加安全规则定义的深度,并使用 $wildcard功能,其中任何安全规则 key 前缀为 $被视为具有可以重复使用的名称的通配符。

{
"rules": {
".read": true,
"projects": {
"proj1": {
".write": "auth != null"
},
"proj2": {
".write": true
},
"proj3": {
".write": true,
"$someChildElementHere": {
".validate": "newData.child('name').isString()
&& newData.child('name').val().length < 10"
}
}
}
}
}

关于Firebase:permission_denied - 无法访问newData.child(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com