摆脱外部嵌套的可观察打字稿

时间:2019-02-14 21:53:16

标签: angular typescript rxjs

我目前正在尝试摆脱“外部可观察”范围。我当前的代码创建了一个Observable<Observable<any>[]>,但是我正在尝试获取一个Observable<any>[]类型。我玩过不同的rxjs运算符,但找不到任何可行的方法。我相信部分问题与外部地图有关,但我不确定如何在不丢失内部数组的情况下进行更改。

所以我有这个代码

this.userOrgs = this.db.doc(user_preferences/${user.uid}).valueChanges().pipe(
  map((pref: UserPreferences) => {
    return pref.orgs.map(org => {
      return this.db.doc(organizations/${org}).valueChanges().pipe(
        map((o: Organization) => { return o; })
      );
    });
  })
);

并且this.userOrgs的类型为Observable<Organization>[];

1 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪个库,但是结果应该像这样

public async getOrganizations(user: any): Observable<Organization>[] {
    const pref: UserPreferences = await this.db.doc(user_preferences/${user.uid}).valueChanges().toPromise();

    return pref.orgs.map(org => {
      return this.db.doc(organizations/${org}).valueChanges().pipe(map((o: Organization) => {
        return o;
      }));
    });
}