Javascript AngularFire-订阅前等待查询

Javascript AngularFire-订阅前等待查询,javascript,google-cloud-firestore,angularfire2,Javascript,Google Cloud Firestore,Angularfire2,我有一个执行查询的服务。此查询由需要运行查询的任何组件触发。但是,我想用查询结果填充组件中的数组。(我完全知道您可以将|async与angularfire一起使用,但某些规范要求我拥有一个数组) 在下面的示例中,组件检查以确保用户已登录以获取用户id,然后调用服务来执行查询 之后,我订阅了可观察的相册,以便有效地更新我的阵列 即使下面的方法有效,调用this.subscribeToList()也是不对的不确定查询是否已运行 更新queryAlbums函数以确保this.subscribeToLi

我有一个执行查询的服务。此查询由需要运行查询的任何组件触发。但是,我想用查询结果填充组件中的数组。(我完全知道您可以将
|async
与angularfire一起使用,但某些规范要求我拥有一个数组)

在下面的示例中,组件检查以确保用户已登录以获取用户id,然后调用服务来执行查询

之后,我订阅了可观察的相册,以便有效地更新我的阵列

即使下面的方法有效,调用
this.subscribeToList()也是不对的不确定查询是否已运行

更新
queryAlbums
函数以确保
this.subscribeToList()的最佳方法是什么仅在
this.albumsService.queryAlbumsList(user.uid)之后调用是否已有效执行

组件。ts

async queryAlbums() {
  const user = await this.authService.isLoggedIn()
  if (user) {
    this.albumsService.queryAlbumsList(user.uid);
    this.subscribeToList();
  }
}

subscribeToList(){
  this._subscription = this.albumsService.albums.subscribe(v => {
    this.myArray = v;
    console.log(v);
  });
}
queryAlbumsList(user_id: string) {
    this.albumsCollection = this.afs.collection<any>(`albums`, ref => ref.where("users", "array-contains", user_id))
    this.albums = this.albumsCollection.valueChanges({ idField: 'id'}).pipe(shareReplay())
}
服务.ts

async queryAlbums() {
  const user = await this.authService.isLoggedIn()
  if (user) {
    this.albumsService.queryAlbumsList(user.uid);
    this.subscribeToList();
  }
}

subscribeToList(){
  this._subscription = this.albumsService.albums.subscribe(v => {
    this.myArray = v;
    console.log(v);
  });
}
queryAlbumsList(user_id: string) {
    this.albumsCollection = this.afs.collection<any>(`albums`, ref => ref.where("users", "array-contains", user_id))
    this.albums = this.albumsCollection.valueChanges({ idField: 'id'}).pipe(shareReplay())
}
queryAlbumsList(用户标识:字符串){
this.albumsCollection=this.afs.collection(`albums`,ref=>ref.where(“用户”,“数组包含”,用户id))
this.albums=this.albumsCollection.valueChanges({idField:'id'}).pipe(shareReplay())
}