gpt4 book ai didi

javascript - 检索 firebase 中所有用户的所有数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:56 25 4
gpt4 key购买 nike

我正在尝试使用 angularfire2 使用 firebase 数据库构建博客应用程序,我希望允许用户可以读取其他用户发布的所有数据,但没有成功,我不知道问题出在哪里。

数据库规则!

{
"rules": {
"report": {
"$uid": {
".read": "true",
".write": "$uid === auth.uid"

}
}

}
}

当我使用此规则时,用户不会阅读其他用户的所有帖子! ,只有我可以阅读我的帖子。

主要代码

 export class FeedPage {


itemsRef: AngularFireList<any>;
items: Observable<any[]>;

constructor(public navCtrl: NavController, public navParams: NavParams, public fire: AngularFireAuth
,public alertCtrl: AlertController,public toastCtrl: ToastController,public popoverCtrl: PopoverController,
public db: AngularFireDatabase)
{


// // Use snapshotChanges().map() to store the key
// this.items = this.itemsRef.snapshotChanges().pipe(
// map(changes =>
// changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
// )

}

ionViewWillLoad(){
this.fire.authState.subscribe(data => {
if(data && data.email && data.uid){
this.toastCtrl.create({
message : ` welcome ${data.email}`,
duration:2000
}).present()


this.itemsRef = this.db.list(`report/`+data.uid);
// Use snapshotChanges().map() to store the key
this.items = this.itemsRef.snapshotChanges().pipe(
map(changes =>
changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
)
);


}

})

}
}

数据库

{
"report" : {
"8D3sENaBcLaXoGNnh1MPuoyj5LP2" : {
"-LWl294Hs6YjkvJE5pqi" : {
"post" : "ali",
"title" : "dd"
},
"-LWlEonKLWfOttzirqp7" : {
"post" : "sas",
"title" : "ass"
},
"-LWlGvn81Kes2A-1UcC2" : {
"post" : "asa",
"title" : "asass"
}
},
"WUM2HBkGo8TFDeOjEqO1s3lCj1p1" : {
"-LWlHlhyS9m3ECS3wIdk" : {
"post" : "qwqsasasa",
"title" : "as"
},
"-LWlHmXZAJdSPZurO7ii" : {
"post" : "qwqsasasa",
"title" : "as"
}
}
}
}

如果我使用此代码检索数据,我会得到空的 html 数据!

this.itemsRef = this.db.list(`report`);

enter image description here

如果我使用此代码检索数据,我只会得到我自己的帖子,而不是其他所有用户的帖子。

this.itemsRef = this.db.list(`report/${data.uid}`);

最佳答案

如果你想允许所有用户阅读所有用户的所有帖子,你需要授予他们访问整个/report节点的权限。在您的安全规则中,您可以通过将 ".read": true 规则向上移动一级来做到这一点:

{
"rules": {
"report": {
".read": true,
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}

但这意味着您还需要更新您的代码以收听所有 /report,然后循环访问其下的各个用户。

关于javascript - 检索 firebase 中所有用户的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286008/

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