我有以下firebase验证:
{
"rules": {
".read": true,
"companies": {
".write": "newData.exists()",
".validate": "newData.hasChildren([
'companyName',
])",
"companyName": {
".validate": "newData.isString()"
},
}
}
}
关注 JSON :
const r = { companyName: "exampleName" }
当我在console.firebase.google.com
的firebase控制台中开始模拟时,一切顺利 - 模拟最终取得了成功。但是,当我尝试使用简单的功能提交数据时,始终拒绝请求。
Error: PERMISSION_DENIED: Permission denied
负责它的逻辑非常简单:
const companyRef = firebase.database().ref('companies').push();
companyRef.set(r, (err) => {
if (err) {
console.log(err); // <-------- always appears :/
}
})
注意:非常有趣事实是,如果我从validate
删除firebase rules
部分,我可以毫无问题地上传数据...所以我认为这对于验证来说是奇怪的......
向前寻求任何帮助。感谢:)
修改:
{
"rules": {
".read": true,
"companies": {
"$companyId": {
".read": true,
".write": true,
".validate": "newData.hasChildren([
'companyEmail',
'companyName',
])",
"companyEmail": {
".validate": "newData.isString()"
},
"companyName": {
".validate": "newData.isString()"
},
}
}
}
}