私が苦労している問題を解決するのを手伝ってください。forkJoinがAngularFire2のvalueChangesで動作しない
私は私が何をしようとしている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
方法は、多分理由valueChanges
の、forkJoin
とうまく動作しません、私はそれを正しく使用していますと仮定?しかし
:
getObj
は次のように、単一Firebaseのオブジェクトを取得するため正常に動作します:this.fbService.getObj(keys[0]) .subsribe(res => console.log(res))// <-- works
forkJoin
が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'内の複数のオブザーバブルのいずれかが失敗した場合、ストリーム全体が失敗するためです。 – CozyAzure
はい、私はそれを試みました。 'this.fbService.getObj(keys [1])'は動作しますが、 'forkJoin'の中では、それだけでも動作しません。 – Matiishyn