服务比页面慢离子4 |火力基地

时间:2019-05-19 15:58:59

标签: firebase ionic-framework google-cloud-firestore ionic4

首先:我对编码通常还是很陌生。抱歉,这个问题很愚蠢^^ 我试图用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;
  }

}

1 个答案:

答案 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);
  }

}