Объединить потоки Firestore используя rxDart - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь объединить два потока из Firestore в один поток, используя RxDart, но он возвращает только результаты одного потока

Stream getData() {
    Stream stream1 = Firestore.instance.collection('test').where('type', isEqualTo: 'type1').snapshots();
    Stream stream2 = Firestore.instance.collection('test').where('type', isEqualTo: 'type2').snapshots();
    return Observable.merge(([stream2, stream1]));
}

1 Ответ

0 голосов
/ 09 сентября 2018

В зависимости от вашего варианта использования вам может не понадобиться RxDart для этого. Если вы просто хотите объединить два потока Firestore в один Dart Stream, вы можете использовать StreamZip из пакета dart:async.

import 'dart:async';     

Stream<List<QuerySnapshot>> getData() {
  Stream stream1 = Firestore.instance.collection('test').where('type', isEqualTo: 'type1').snapshots();
  Stream stream2 = Firestore.instance.collection('test').where('type', isEqualTo: 'type2').snapshots();
  return StreamZip([stream1, stream2]).asBroadcastStream();
}
...