首先:我对编码通常还是很陌生。抱歉,这个问题很愚蠢^^ 我试图用firestore在ionic中构建一个简单的应用程序。 现在,我想创建一些简单的服务。现在我有问题了,该服务正在获取数据后 已传递“ this.userData = this.userService.currUser”。如此看来,我的this.userData中没有数据。
如何正确执行此操作? :/
谢谢!
服务:
export class UserServiceService {
public currUser: any;
private currUserRef: any;
constructor(private afs: AngularFirestore, public afAuth: AngularFireAuth) {
const currUserId = afAuth.auth.currentUser.uid;
this.currUserRef = afs.collection('users').doc(currUserId).valueChanges();
this.currUser = this.currUserRef.subscribe(data => {
return data;
});
}
}
页面:
export class EventlistPage implements OnInit {
private events: Observable<Event[]>;
private userData;
constructor(private eventService: EventService, private afAuth:
AngularFireAuth, public userService: UserServiceService) { }
ngOnInit() {
this.events = this.eventService.getEvents();
this.userData = this.userService.currUser;
}
}
答案 0 :(得分:0)
将您的Observable
转换为Promise
并使用.then()
因此您的服务将如下所示
export class UserServiceService {
public currUser: any;
private currUserRef: any;
constructor(private afs: AngularFirestore, public afAuth: AngularFireAuth) {
const currUserId = afAuth.auth.currentUser.uid;
this.currUserRef = afs.collection('users').doc(currUserId).valueChanges();
}
getDataFromFireStore(){
return this.currUserRef.toPromise();
}
}
在您的用户类别中
export class EventlistPage implements OnInit {
private events: Observable<Event[]>;
private userData;
constructor(private eventService: EventService, private afAuth:
AngularFireAuth, public userService: UserServiceService) { }
ngOnInit() {
this.events = this.eventService.getEvents();
this.userService.getDataFromFireStore().then(data => this.userData = data);
}
}