请帮我解决一个问题,我一直在苦苦挣扎。
我有一个 Firebase 对象键的数组。
我假设这个
但是:
我有一个 Firebase 对象键的数组。
const keys = ['-Kx9pqoMWlJLbKLQcAkP', '-Kx9pqoOYlDHTJ64Was5']
我想做的是使用forkJoin
将所有Firebase对象合并到一个流中。 这是我的代码:
const obj1 = this.fbService.getObj(keys[0]);
const obj2 = this.fbService.getObj(keys[1]);
forkJoin([obj1, obj2])
.subscribe(res => {
console.log(res); // <-- this never happens
};
fbService方法是:
getObj(key): Observable<MyObj> {
return this.fb.object(`/path/to/obj/${key}`).valueChanges();
}
我假设这个
getObj
方法和forkJoin
一起使用时不能正常工作,可能是因为valueChanges
,请问我的使用方式正确吗?但是:
getObj
works fine for getting single Firebase object, like:this.fbService.getObj(keys[0]) .subsribe(res => console.log(res))// <-- works
forkJoin
works fine with simple HTTP requests, likeconst r1 = this.http.get('https://swapi.co/api/people/1'); forkJoin([r1]) .subscribe(res => { console.log(res); // <-- works };
那么,我做错了什么呢? 我的目标是从键的数组中获取对象数组:
['-Kx9pqoMWlJLbKLQcAkP', '-Kx9pqoOYlDHTJ64Was5'] => [{prop:'val'},{prop:'val2'}]
this.fbService.getObj(keys[1])
是否也可以工作吗?因为如果forkJoin
中的多个可观察对象中有任何一个失败,整个流都会失败。 - CozyAzurethis.fbService.getObj(keys[1])
是可以工作的,但当它在forkJoin
中时,即使单独使用,它也不起作用。 - Ivan