AngularFire2 获取 UID 并在任何页面中使用
AngularFire2 getting UID and using in any page
在 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"
}
}
}
我一次又一次地使用 observables 来获取每个页面的 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
})
})
}
}
这是正确的方法吗?
创建一个包含在 app.module.ts
的 Providers
部分中的服务。这样服务就可以在整个应用程序中保持其状态。
app.module.ts
@NgModule({
providers: [
AuthService
]
})
export class AppModule {}
auth.service.ts
@Injectable()
export class AuthService {
private uid: string;
setUid(uid: string): void {
this.uid = uid;
}
getUid(): string {
return this.uid;
}
}
当用户登录到应用程序时执行 setUid(usersUid)
然后在任何页面上您可以在构造函数中包含 auth.service
并执行 getUid
它将从中获取 UID服务。
export class AccountProfilePage {
constructor(private authService: AuthService) {}
someMethod() {
this.authService.getUid(); // Returns UID
}
}
在 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"
}
}
}
我一次又一次地使用 observables 来获取每个页面的 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
})
})
}
}
这是正确的方法吗?
创建一个包含在 app.module.ts
的 Providers
部分中的服务。这样服务就可以在整个应用程序中保持其状态。
app.module.ts
@NgModule({
providers: [
AuthService
]
})
export class AppModule {}
auth.service.ts
@Injectable()
export class AuthService {
private uid: string;
setUid(uid: string): void {
this.uid = uid;
}
getUid(): string {
return this.uid;
}
}
当用户登录到应用程序时执行 setUid(usersUid)
然后在任何页面上您可以在构造函数中包含 auth.service
并执行 getUid
它将从中获取 UID服务。
export class AccountProfilePage {
constructor(private authService: AuthService) {}
someMethod() {
this.authService.getUid(); // Returns UID
}
}