我想从我的firebase数据库请求的JSON对象中获取登录用户的'userRole'。所以我尝试了以下代码:
ionViewWillLoad(){
this.afAuth.authState.subscribe(user => {
this.ref = user.uid;
this.userService.getUserById(this.ref).subscribe(data => {
this.data = data
console.log(this.data);
})
});
}
我从我的数据库获取的文件看起来像这样:
0:{$value: "admin@gmail.com", $key: "email", $exists: ƒ}
1:{$value: "password", $key: "password", $exists: ƒ}
2:{$value: 1, $key: "userRole", $exists: ƒ}
3:{$value: "", $key: "worksFor", $exists: ƒ}
如何从此JSON对象访问“userRole”?我尝试了'data.userRole','data [2]。$ value',但这些都不起作用。
以下是将新用户添加到数据库的代码:
getUserById(id){
return this.afd.list('/users/' + id);
}
register(user){
return this.afAuth.auth.createUserWithEmailAndPassword(user.email, user.password).then(data => {
this.afd.object('/users/' + data.uid).update(user);
});
}
我向数据库添加数据的方式有问题吗?
谢谢!
答案 0 :(得分:0)
Firebase有几款产品,我认为你需要使用其中的两款产品。 Authentication用于控制用户身份验证,Realtime database用于保存其他信息,如地址,电话和与项目相关的其他数据。
就我而言,我更愿意将用户信息包装在服务中 - my example。片段:
import { AngularFireDatabase } from 'angularfire2/database';
import { AngularFireAuth } from 'angularfire2/auth';
constructor(public afAuth: AngularFireAuth, private db: AngularFireDatabase) { }
load() {
let promise = new Promise((resolve, reject) => {
this.afAuth.authState.subscribe((auth) => {
this.authState = auth
resolve(true);
},
err => reject(err)
);
});
return promise;
}
get userID(): string {
return this.authenticated ? this.authState.uid : '';
}
retrieveUser(): any {
if(this.authenticated === undefined){
console.log('You need to authenticate first.');
return null;
}
this.user = this.db.object('/users/'+ this.userID)
.valueChanges()
.publishReplay(1)
.refCount();
return this.user;
}
我这样用:
this.authService.retrieveUser().subscribe(user => {
this.user = user;
});