Ошибка «Вы указали недопустимый объект» при подписке на наблюдаемый rxjs - PullRequest
0 голосов
/ 19 декабря 2018

Итак, я пытаюсь сделать несколько динамических запросов к моему FireStore в угловом приложении.Используя angular / fire 5.1.

Вот сделка:

products$: Observable<ProductModel[]>;
name$ = new BehaviorSubject<string>(null);
/*..*/
this.products$ = this.name$.pipe(
  switchMap(query =>
    this.db.collection<ProductModel>('products', ref => ref.orderBy('name').startAt(query)).valueChanges()
  )
);
dataService.getDataObservable().subscribe(data => {
  this.name$.next(data);
  }
);
this.products$.subscribe(items => {
  console.log(items);
}, err => {
  console.log(err);
});

это не улавливает ошибку.вместо этого я получаю TypeError в консоли:


core.js: 12632 ОШИБКА TypeError: Вы указали недопустимый объект, где ожидался поток.Вы можете предоставить Observable, Promise, Array или Iterable.


Что я делаю там неправильно и как лучше всего применять динамические запросы.К сожалению, пакет angular / fire не обеспечивает хорошую документацию онлайн (по крайней мере, бесплатно).

1 Ответ

0 голосов
/ 19 декабря 2018

Вы должны излучать некоторую ценность из предмета поведения.Таким образом, вы можете получить наблюдаемое значение с помощью оператора pipe.

this.name$.next('hi');
this.name$.pipe(
  switchMap(query =>{
    return query;
  })
).subscribe(value => {
  console.log(value);
});
...