我将Firebase用户配置文件数据文档ID保存为用户ID,现在我想使用当前记录的用户ID从Firebase用户集合中获取当前记录的用户数据,并将其转换为角度模型对象,我尝试了一些方法,但是这些方法给我带来错误。
首先,我使用以下代码获取当前登录的用户ID
this.afAuth.auth.onAuthStateChanged(user => {
if (user) {
this.selectedid = user.uid;
在创建User对象并将其最终分配给firebase文档数据之后,如下所示
getnannies() {
return this.db.collection('nanny').doc(this.selectedid).valueChanges()
as Nanny;
}
(保姆是我的模特教室的类型) 然后我尝试如下访问该文档数据
nanny:Nanny;
this.nanny = this.serviceClass.getnannies();
console.log(this.nanny.name);
但是此方法给我错误,我想知道如何执行此操作。我的完整代码附在下面
这是我的服务文件
export class GetNannyDetailsService {
selectedid: string;
constructor(private db: AngularFirestore, private afAuth: AngularFireAuth,
private router: Router) {
}
parseNanny() {
this.afAuth.auth.onAuthStateChanged(user => {
if (user) {
this.selectedid = user.uid;}});
}
getnannies() {
return this.db.collection('nanny').doc(this.selectedid).valueChanges()
as Nanny;
}
这是我的profile.component.ts
export class ProfileComponent implements OnInit {
pronan:Nanny;
constructor(private profile: GetNannyDetailsService) {
}
ngOnInit() {
this.profile.parseNanny();
this.pronan = this.profile.getnannies();
console.log(this.pronan.name);}
这是我的保姆模特
export interface Nanny {
email?: string;
password?: string;
nannyId?: string;
name?: string;
address?: string;
number?: string;
gender ?: string;
town?: string;
jobType ?: string;
birthdate?: Date;
hourlyRate?: number;
availability?: string;
bio?: string;
imgurl?: string;
}
最后控制台显示“ undefined”,请帮助我。
答案 0 :(得分:0)
在服务文件中使用一项功能。
getNanny() {
let s: Subject<Nany> = new Subject();
this.afAuth.auth.onAuthStateChanged(user => {
if (user) {
this.db.collection('nanny').doc(user.id).get().subscribe(
next => {
s.next(next.data())
});
}
});
return return s as Observable<Nany>
}
在组件文件中,通过订阅服务方法获取对象。
pronan:Nanny;
constructor(private profile: GetNannyDetailsService) {
}
ngOnInit() {
this.profile.getnannies().subscribe(nany=>{
this.pronan=nany
consple.log(nany)
});
}