【问题标题】:How do I convert an observable that emits an array into an observable that emits each value of the array individually?如何将发出数组的可观察对象转换为单独发出数组每个值的可观察对象?
【发布时间】:2020-07-09 08:33:56
【问题描述】:

我正在使用 RXFire 和 RXJS。

collectionData(firebase.firestore.collection('collectionname')).subscribe(x=>console.log(x)

返回

// [{document1}, {document2}]

我想要的是一个返回的可观察对象

// {document1}
// {document2}

我尝试过使用 from() 和 toArray() 的组合(即将 observable 转换为普通数组并返回到一个一个发出每个文档的 observable)但是 toArray() 只创建一个发出的 observable一个数组,而不是一个实际的数组。我需要一个与 toArray() 相反的操作。获取一个发出数组的 observable 并将其转换为一个单独发出每个值的 observable。

我该怎么做?


编辑:

我也试过做类似的事情

const newObs = oldObs.subscribe(x => from(x))

但它存储的是订阅者,而不是新的 observable。 =(

【问题讨论】:

    标签: arrays rxjs observable rxfire


    【解决方案1】:

    有多种方法可以做到这一点。例如:

    collectionData(firebase.firestore.collection('collectionname'))
      .pipe(
        concatAll(),
      )
      .subscribe();
    

    您也可以使用concatMap(array => array)

    您也可以使用merge*,而不是concat*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多