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())
}