我有一个服务,可观察到返回对象“ Recipe”。 Recipe对象具有带有ID的所有者列表。
我的服务获取这些ID,并返回一个包含所有者实际详细信息的Observable数组。在我的模板中,我可以使用async标志订阅可观察的主配方,然后在所有者内部可观察值上使用async标志。
示例
基础对象
Recipe = {
name: Cake,
price: £3.99,
type: Sweet,
owner: 1293jhd8sdhs,
book: ju3923872u2,
ingredients: [
9j3hj383j398w,
jmfjd8672372i,
82378u2ndfmff,
]
}
服务:
return this.firestoreSvc.docAsObs(`recipes/${id}).pipe(
map(recipeDetails => {
recipeDetails['userDetails'] = this.firestoreSvc.docAsObs(`users/${recipeDetails.owner})
recipeDetails['bookDetails'] = this.firestoreSvc.docAsObs(`books/${recipeDetails.book})
recipeDetails['ingredientDetails'] = recipeDetails.ingredients.map(x => this.firestoreSvc.docAsObs('ingredients/${x}')
recipeDetails['ingredientDetails'] = combineLatest(recipeDetails['ingredientDetails']
return recipeDetails
)
firestoreSvc.docAsObs仅返回具有Observable的路径,该路径带有id的snapshotChanges(使用AngularFire2)
服务返回的对象
Recipe = {
name: Cake,
price: £3.99,
type: Sweet,
owner: 1293jhd8sdhs,
userDetails : Observable,
bookDetails: Observable,
ingredientDetails: Observable[],
}
对或错都可以。在我的模板中,我处理(Food | async)和(Food.userDetails | async)以显示值
但是,现在我需要访问组件中的userDetails值。我确信使用所有强大的rxjs可以有一种更简单的方法,但我无法使其正常工作。
我已经搜索并尝试了flatMap来平化可观察对象,以及mergeMap,forkJoin和concatAll(),但是要么没有返回任何结果,要么我没有返回流。
只是想知道是否有人可以提供帮助。我喜欢用firestoreSvc来返回我的可观察对象,希望使用它不会妨碍我
谢谢
李