我正在尝试对 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);
}
我错过了什么并且做错了什么?我这样做的原因是为了弥补 Firestore 缺少 OR
运算符。
最佳答案
我在网上找到的,希望对你有帮助:
`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];
// ...
});`
https://stackoverflow.com/questions/52183978/