如何将发出数组的可观察对象转换为单独发出数组每个值的可观察对象?

How do I convert an observable that emits an array into an observable that emits each value of the array individually?

我正在使用 RXFire 和 RXJS。

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

returns

// [{document1}, {document2}]

我想要的是 returns

// {document1}
// {document2}

我试过结合使用 from() 和 toArray() (即将可观察对象转换为普通数组,然后再转换回可观察对象,逐个发出每个文档)但 toArray() 仅创建可观察对象发出一个数组,而不是一个实际的数组。我需要一个与 toArray() 相反的操作。获取一个发射数组的可观察对象,并将其转换为单独发射每个值的可观察对象。

我该怎么做?


编辑:

我也试过

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

但是存储订阅者,而不是新的可观察对象。 =(

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

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

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

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