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

时间:2020-03-28 19:14:53

标签: arrays rxjs observable rxfire

我正在使用RXFire和RXJS。

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

返回

// [{document1}, {document2}]

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

// {document1}
// {document2}

我尝试使用from()和toArray()的组合(即,将可观察对象转换为一个普通数组,然后再返回到一个可观察对象,该对象可逐一发出),但是toArray()仅创建一个可观察对象,该可观察对象发出一个数组,而不是实际的数组。我需要一个操作就是toArray()的对立面。取一个发出数组的可观察对象,然后将其转换为分别发出每个值的一个可观察对象。

我该怎么做?


编辑:

我也尝试做类似的事情

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

您也可以使用concat*代替merge*