等待动态生成的Firebase列表可观察对象完成

时间:2018-06-21 16:26:16

标签: angular firebase firebase-realtime-database rxjs angularfire2

我正在尝试等待几个动态生成的可观察对象完成,以便可以迭代Firebase列表。我已经尝试过forkJoin和zip,但是最后一行没有记录任何内容。

this.db.list<ChatByUser>(`chats_by_user/${this.userService.user.id}`).valueChanges().first().subscribe(chatsByUser => {
    const obsArray: Observable<Chat>[] = [];

    chatsByUser.forEach(chatByUser => {
        obsArray.push(this.db.object<Chat>(`chats/${chatByUser.chatId}`).valueChanges());
    });

    Observable.zip(obsArray).first().subscribe(chats => console.log(chats));
});

我不知道它是否与它有关,但是我正在将rxjs 6与rxjs-compat一起使用,并像这样导入运算符:

import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/zip";

1 个答案:

答案 0 :(得分:0)

在将可观察对象添加到数组之前,我需要消耗它们。因此,将first()方法添加到valueChanges()可以达到目的。