我尝试对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
操作符。
3条答案
按热度按时间6vl6ewon1#
我在网上找到了这个,希望能有所帮助:
5n0oy7gb2#
你可以使用
whereIn
条件,它是一个List<dynamic>
,这是我的工作!例如:
k75qkfdt3#
使用
collectionGroup()
集合组由具有相同ID的所有集合组成。默认情况下,查询从数据库中的单个集合检索结果。使用集合组查询可以从集合组而不是单个集合检索文档。
来自文档的示例
例如,您可以通过向每个城市添加地标子集合来创建地标集合组:
我们可以使用前面描述的简单查询和复合查询来查询单个城市的地标子集合,但是您可能还希望同时检索每个城市的地标子集合的结果。
地标集合组由具有ID地标的所有集合组成,您可以使用集合组查询对其进行查询。例如,以下集合组查询将检索所有城市的所有博物馆地标: