在Ionic(AngularFire2)应用程序中,我需要获取Firebase用户UID的每个页面,以从Firebase数据库获取相关数据 . 例如,在Firebase上有一个节点('/ users'),其密钥是FireBase Auth User UID .
{
"users" : {
"LYW6i8sTbWauCvkXULIbszIWOdm1" : {
"cellPhone" : "123321",
"name" : "Name1",
"userType" : "0"
},
"i4KSAzO2UhakowLKOZCa0ZeohRH3" : {
"cellPhone" : "43343",
"name" : "Name2",
"userType" : "1"
}
}
}
我正在使用observable来获取UID,对于每个页面一次又一次 . 我想会有很多订阅者,每次离子应用程序都要求Firebase Auth Server获取用户UID?
例如 .
export class AccountProfilePage {
user = {} as User
constructor(public navCtrl: NavController, public navParams: NavParams,
private afDb:AngularFireDatabase, private afAuth:AngularFireAuth) {
}
updateProfile(){
this.afAuth.authState.subscribe(authState=>{
this.afDb.object('users/'+authState.uid).update({
cellPhone:this.user.cellPhone
})
})
}
}
这是正确的方法吗?
1 回答
创建一个包含在
app.module.ts
的Providers
部分中的服务 . 这样,服务就可以在整个应用程序中保持其状态 .app.module.ts
auth.service.ts
当用户登录应用程序时
setUid(usersUid)
然后在任何页面上,您可以在构造函数中包含auth.service
并执行getUid
,它将从服务中获取UID .