Я использую rxjs для получения владельцев регистраций и связанного с ними сервиса и образа сервиса, однако, когда сервис обновляется, он не отражается в моем наблюдаемом?
Может кто-нибудь понять, почему, что я делаю неправильно?
Я должен продолжать писать материал, потому что stackoverflow не позволит мне публиковать, если я не запишу избыточную, лишнюю информацию для чтения читателем.
that._registrantsSubscription = that.userForumRegistrantService.getRegistrants(forum.uid, forum.forumId)
.switchMap(registrants => {
if (registrants && registrants.length > 0) {
let observables = registrants.map(registrant => {
let getService$ = that.userServiceService.getService(registrant.uid, registrant.serviceId);
let getDefaultServiceImages$ = that.userServiceImageService.getDefaultServiceImages(registrant.uid, registrant.serviceId);
return combineLatest(getService$, getDefaultServiceImages$)
.switchMap(results => {
const [service, defaultServiceImages] = results;
if (service){
if (defaultServiceImages && defaultServiceImages.length > 0)
service.defaultServiceImage = of(defaultServiceImages[0]);
else {
let tempImage = {
tinyUrl: '../../../assets/defaultTiny.jpg',
name: 'No image'
};
service.defaultServiceImage = of(tempImage);
}
return of(service);
}
else return of(null);
}
);
});
return zip(...observables, (...results) => {
return results.map((result, i) => {
if (result)
registrants[i].service = of(result);
else
registrants[i].service = of(null);
return registrants[i];
});
});
}
else
return of([]);
})
.subscribe(registrants => {
that.registrants = of(registrants);
}
);
public getRegistrants(parentUserId: string, forumId: string): Observable<any[]> {
return this.afs.collection<any>(`users/${parentUserId}/forums/${forumId}/registrants`, ref => ref.orderBy('creationDate', 'desc')).valueChanges();
}
public getService (parentUserId: string, serviceId: string): Observable<any> {
return this.afs.collection(`users/${parentUserId}/services`).doc(serviceId).valueChanges();
}
public getDefaultServiceImages (parentUserId: string, serviceId: string): Observable<any> {
return this.afs.collection<any>(`users/${parentUserId}/services/${serviceId}/images`, ref => ref.where('default', '==', true).limit(1)).valueChanges();
}