Как преобразовать наблюдаемое, которое испускает массив, в наблюдаемое, которое испускает каждое значение массива индивидуально?

Я использую 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 ответ

Решение

Есть несколько способов сделать это. Например:

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

Вы также можете использовать concatMap(array => array).

Вместо того concat* вы можете использовать merge* также.

Другие вопросы по тегам