【发布时间】:2019-11-14 17:39:23
【问题描述】:
我正在研究 ionic 上的 firebase-realtime-database,我对如何在 $uid 节点内“读取”和“写入”有点困惑。我目前正在处理拒绝访问。
节点看起来像这样
rules {
"info": {
"$uid": {
".read": true,
".write": "$uid === auth.uid"
}
}
}
而我的 json 数据库看起来像这样
{
info: {
01: {
name:jay
age:16
}
}
}
我有点困惑要采取哪些步骤才能访问 $uid 节点内的数据。我确实尝试将我的 json 数据库节点更新为此。
{
info: {
f3de4734-8fb2-42bd-971d-8e693f8aab3b: { // auth.uid of dummy@gmail.com
01: {
name:jay
age:16
}
}
}
}
和我的“getafdData() 函数”路径目录到“'info/'+ getuser”。
仅当“getuser”是文件的所有者或保存数据的节点时,上述更新才有效,但是我希望其他经过身份验证的用户也可以读取它,我无法用 $uid 理解。
我已经使用 firebase 的“signInWithEmailAndPassword()”功能验证登录
这是我用来验证的代码
try {
var r = await this.fAuth.auth.signInWithEmailAndPassword(
"dummy@gmail.com",
"123456"
);
if (r) {
console.log("Successfully logged in!");
await this.getafdData(); \\\ get the data when login
}
} catch (err) {
console.error(err);
}
async getafdData(){
var firebaseRef = this.afd.database.ref();
let data = await new Promise(function(resolve,reject){
return firebaseRef.child('info/')
.on("child_added", function(snapshot) {
console.log(snapshot.val());
//resolve(data);
}, function(err) {
console.log(err);
reject(err);
})
});
return data;
}
你能告诉我我做错了什么吗?或者更确切地说,为了访问 $uid 节点我应该采取正确的步骤?
【问题讨论】:
-
getafdData是做什么的?如果您编辑您的问题以包含该方法的代码,这可能是最好的。你有什么问题?有错误信息吗? -
感谢 btw 发现我的错误,我已经编辑了我的问题。
标签: javascript firebase firebase-realtime-database firebase-authentication firebase-security