AngularFire2 с Observables не перехватывает свойство $ref

Поэтому я начал использовать AngularFire2 (версия 4.0.0-rc.1) и застрял на этой проблеме:

  getWishlist$(): FirebaseListObservable<{}> {
    return <FirebaseListObservable<{}>>this.store.select(getFirebaseUID)
      .filter(res => res.isAuthenticated)
      .map(res => res.UserUUID)
      .switchMap(uid => this.db.list(`/wishlist/${uid}/products`));
  }

Так что после оператора switchMap он должен вернуть мне оригинальный Observable от this.db.list() это FirebaseListObservable, но этого не происходит, и мой следующий код имеет ошибку во время выполнения.

  this.accountService.getWishlist$().$ref
    .orderByChild('pk').equalTo(designer.pk).once('value', (data) => {
       if (!data.exists()) {
         this.accountService.getWishlist$().push(designer);
       }
    })

И ошибка:

Cannot read property 'orderByChild' of undefined

Что я делаю не так?

1 ответ

Решение

Я ответил на аналогичный вопрос, который был задан через вопрос репо:

Это не так switchMap - и RxJS, в общем-то - работает. Наблюдаемая, возвращаемая оператором, зависит от наблюдаемой, по которой вызывается оператор. Сказанное наблюдаемое может реализовать lift вернуть наблюдаемый экземпляр того же типа.

Реализуемые AngularFire2 реализуют lift - смотрите здесь и здесь - но это не имеет значения в ситуации, которую вы описали,...

Наблюдаемое, которое возвращается из вашего switchMap вызов является наблюдаемым, который был снят с this.store.select - не из this.db.list,

Другие вопросы по тегам