首页 文章

Flutter Multiple Firestore Queries

提问于
浏览
1

我正在尝试向Firestore进行多个查询,并将结果合并到一个流中,如here . 我尝试使用 StreamGroup.merge() 但它只返回一个流的结果 . 我注意到它确实获得了所有流的数据,但只在一切完成时返回一个 . 这是我做的:

Stream getStream(){
    List<Stream> streams = [];     

    streams.add(Firestore.instance.collection(Constants.REQUESTS_NODE).
    where("municipality",isEqualTo: "City of Johannesburg Metropolitan").
    where("service_id",isEqualTo: 2).
    snapshots());
    streams.add(Firestore.instance.collection(Constants.REQUESTS_NODE).
    where("municipality",isEqualTo: "Lesedi Local").where("service_id",isEqualTo: 2).
    snapshots());    

    return StreamGroup.merge(streams);

  }

我错过了什么,做错了什么?我'm doing this is to compensate for Firestore'缺少 OR 运算符的原因 .

2 回答

  • 1

    对于将来可能需要帮助的人,我设法使用 StreamZip 来解决它 . 你可以从这里了解更多关于它website

  • 2

    我在网上找到了这个,希望它有所帮助:

    `import 'package:async/async.dart';
    
    Stream<DocumentSnapshot> stream1 = firestore.document('/path1').snapshots();
    Stream<DocumentSnapshot> stream2 = firestore.document('/path2').snapshots();
    StreamZip bothStreams = StreamZip([stream1, stream2]);
    
    // To use stream
    bothStreams.listen((snaps) {
     DocumentSnapshot snapshot1 = snaps[0];
     DocumentSnapshot snapshot2 = snaps[1];
    
     // ...
    });`
    

相关问题