将 firestore 查询与 rxjs 结合(或查询)
Combine firestore queries with rxjs (OR query)
我正在尝试使用 RxJS 在 Ionic/Angular 项目中组合两个 firestore 查询。我发现 this blog post 从中解释了基本原理,但是 .combineLatest
方法已被弃用,我无法弄清楚如何将两个查询通过管道传输到地图中。
caOrCoCities$: Observable<City[]>;
...
const californiaRef = this.angularFirestore
.collection("cities", ref => ref.where("state","==","CA"));
const coloradoRef = this.angularFirestore
.collection("cities", ref => ref.where("state","==","CO"));
不确定如何在下面更新...
this.caOrCoCities$ = Observable
.combineLatest(californiaRef.valueChanges(),
coloradoRef.valueChanges())
.switchMap(cities => {
const [californiaCities, coloradoCities] = cities;
const combined = californiaCities.concat(coloradoCities);
return Observable.of(combined);
});
RxJS 6 在语法上有几处变化。您可以如下所示更改您的代码。
import { combineLatest, of } from 'rxjs';
this.caOrCoCities$ = combineLatest(californiaRef.valueChanges(), coloradoRef.valueChanges())
.pipe(
switchMap(cities => {
const [californiaCities, coloradoCities] = cities;
const combined = californiaCities.concat(coloradoCities);
return of(combined);
})
);
我正在尝试使用 RxJS 在 Ionic/Angular 项目中组合两个 firestore 查询。我发现 this blog post 从中解释了基本原理,但是 .combineLatest
方法已被弃用,我无法弄清楚如何将两个查询通过管道传输到地图中。
caOrCoCities$: Observable<City[]>;
...
const californiaRef = this.angularFirestore
.collection("cities", ref => ref.where("state","==","CA"));
const coloradoRef = this.angularFirestore
.collection("cities", ref => ref.where("state","==","CO"));
不确定如何在下面更新...
this.caOrCoCities$ = Observable
.combineLatest(californiaRef.valueChanges(),
coloradoRef.valueChanges())
.switchMap(cities => {
const [californiaCities, coloradoCities] = cities;
const combined = californiaCities.concat(coloradoCities);
return Observable.of(combined);
});
RxJS 6 在语法上有几处变化。您可以如下所示更改您的代码。
import { combineLatest, of } from 'rxjs';
this.caOrCoCities$ = combineLatest(californiaRef.valueChanges(), coloradoRef.valueChanges())
.pipe(
switchMap(cities => {
const [californiaCities, coloradoCities] = cities;
const combined = californiaCities.concat(coloradoCities);
return of(combined);
})
);