我有一个执行查询的服务。该查询是从需要查询运行的任何组件触发的。但是,我想用查询结果填充组件内的数组。 (我完全知道您可以将| async
与angularfire一起使用,但是某些规范要求我有一个数组)
在下面的示例中,该组件检查以确保用户已登录以获得用户ID,然后调用服务以执行查询。
此后,我订阅了可观察的相册,以便有效地更新我的阵列。
即使以下方法可行,但不确定是否已运行查询来调用this.subscribeToList();
还是不合适的。
更新queryAlbums
函数以确保仅在有效执行this.subscribeToList();
之后才调用this.albumsService.queryAlbumsList(user.uid);
的最佳方法是什么?
Component.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);
});
}
Service.ts
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())
}