【发布时间】:2025-12-04 06:55:02
【问题描述】:
请帮助我解决我正在苦苦挣扎的问题。
我有一组 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可以很好地获取单个 Firebase 对象,例如:this.fbService.getObj(keys[0]) .subsribe(res => console.log(res))// <-- works -
forkJoin可以很好地处理简单的 HTTP 请求,例如const 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中的多个可观察对象中的任何一个失败,则整个流都会失败。 -
是的,我确实尝试过。
this.fbService.getObj(keys[1])有效,但是当它在forkJoin内部时,即使是单独的,它也不起作用
标签: angular firebase rxjs angularfire2 rxjs5