Rxjs:对象为可观察对象,内部可观察对象为值

时间:2019-09-04 11:04:17

标签: angular rxjs

我有一个服务,可观察到返回对象“ 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来返回我的可观察对象,希望使用它不会妨碍我

谢谢

0 个答案:

没有答案
相关问题