Как преобразовать наблюдаемое, которое испускает массив, в наблюдаемое, которое испускает каждое значение массива индивидуально?
Я использую 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*
также.