【发布时间】:2020-12-21 14:07:53
【问题描述】:
我有一个这样的用户节点:
在这里,我需要访问appleId 字段,这是我的规则:
{
"rules": {
"users": {
"$userId": {
"single": {
"public": {
".read": "true"
}
},
}
}
}
}
因此,按照该规则,我应该读取存储在public 节点中的所有值。
这是我用 NodeJS 编写的代码
const data = firebase
.database()
.ref("users/XzIvC5GUKPesQybZWfrxsSSXpMt2")
.child('single')
.child('public')
.child('appleId')
.once("value");
data.then((ss) => {
console.log(ss.val());
});
这很好用。但我需要搜索appleId,所以我尝试了这个:
const data = firebase
.database()
.ref("users")
.child("single")
.child("public")
.child("appleId")
.equalTo("000072.b185925fe1f1431dad013b66f9ceb8d1.1155")
.once("value");
data.then((ss) => {
console.log(ss.val());
});
firebase 给出了这个错误;
(node:5131) UnhandledPromiseRejectionWarning: Error: permission_denied at /users/single/public/appleId: Client doesn't have permission to access the desired data.
我的意思是在没有用户 ID 的情况下搜索 appleId。我怎样才能做到这一点?我应该改变我的规则还是代码有问题?
【问题讨论】:
-
您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获得。将 JSON 作为文本使其可搜索,允许您删除不想共享的值,并允许我们轻松使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事做。
标签: node.js firebase firebase-realtime-database firebase-security