如何使用firebase制作颤振查询过滤器?
我正在制作一些报告折线图,其中包含每个月的订单/销售信息,我有一份包含所有已完成销售的文档 我想做的是得到一个如何使用firebase制作颤振查询过滤器?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在制作一些报告折线图,其中包含每个月的订单/销售信息,我有一份包含所有已完成销售的文档 我想做的是得到一个 每个月/周/日订单计数(我创建了一个包含示例数据的字符串字段:2020-08-02T18:28:09.950990) 我还想为我得到的数据添加开始日期和结束日期,这样我可以从8月1日到8月12日调用代码,或者从2019年8月1日到2020年8月1日调用代码 然后,所有这些将显示在折线图中,使用chart_颤振插件 我已经试过了,但它只显示返回指定路径(/orders)上的所有文档
- 每个月/周/日订单计数(我创建了一个包含示例数据的字符串字段:2020-08-02T18:28:09.950990)
- 我还想为我得到的数据添加开始日期和结束日期,这样我可以从8月1日到8月12日调用代码,或者从2019年8月1日到2020年8月1日调用代码
- 然后,所有这些将显示在折线图中,使用chart_颤振插件
流采集流({
@必需的字符串路径,
@所需的T生成器(地图数据、字符串文档ID),
查询queryBuilder(查询查询),
整数排序(T lhs,T rhs),
}) {
Query=Firestore.instance.collection(路径);
if(queryBuilder!=null){
query=queryBuilder(查询);
}
最终流快照=query.snapshots();
返回snapshots.map((快照){
最终结果=snapshot.documents
.map((快照)=>builder(snapshot.data,snapshot.documentID))
.其中((值)=>value!=null)
.toList();
if(排序!=null){
结果.排序(排序);
}
返回结果;
});
}
我还尝试创建一个集合流,其中包含2个用于数据筛选的开始日期和结束日期
Stream<List<T>> collectionStreamWhere2<T>({
@required String path,
@required String whereKey1,
@required String whereKey2,
@required dynamic whereValue1,
@required dynamic whereValue2,
@required T builder(Map<String, dynamic> data, String documentID),
Query queryBuilder(Query query),
int sort(T lhs, T rhs),
}) {
Query query = Firestore.instance.collection(path).where(whereKey1, isEqualTo: whereValue1).where(whereKey2, isEqualTo: whereValue2);
if (queryBuilder != null) {
query = queryBuilder(query);
}
final Stream<QuerySnapshot> snapshots = query.snapshots();
return snapshots.map((snapshot) {
final result = snapshot.documents
.map((snapshot) => builder(snapshot.data, snapshot.documentID))
.where((value) => value != null)
.toList();
if (sort != null) {
result.sort(sort);
}
return result;
});
}
Stream collectionstreamwhere 2({
@必需的字符串路径,
@所需字符串,其中键1,
@所需字符串,其中键2,
@所需动态值1,
@所需动态值2,
@所需的T生成器(地图数据、字符串文档ID),
查询queryBuilder(查询查询),
整数排序(T lhs,T rhs),
}) {
Query Query=Firestore.instance.collection(path).where(whereKey1,isEqualTo:whereValue1).where(whereKey2,isEqualTo:whereValue2);
if(queryBuilder!=null){
query=queryBuilder(查询);
}
最终流快照=query.snapshots();
返回snapshots.map((快照){
最终结果=snapshot.documents
.map((快照)=>builder(snapshot.data,snapshot.documentID))
.其中((值)=>value!=null)
.toList();
if(排序!=null){
结果.排序(排序);
}
返回结果;
});
}
Stream<List<T>> collectionStreamWhere2<T>({
@required String path,
@required String whereKey1,
@required String whereKey2,
@required dynamic whereValue1,
@required dynamic whereValue2,
@required T builder(Map<String, dynamic> data, String documentID),
Query queryBuilder(Query query),
int sort(T lhs, T rhs),
}) {
Query query = Firestore.instance.collection(path).where(whereKey1, isEqualTo: whereValue1).where(whereKey2, isEqualTo: whereValue2);
if (queryBuilder != null) {
query = queryBuilder(query);
}
final Stream<QuerySnapshot> snapshots = query.snapshots();
return snapshots.map((snapshot) {
final result = snapshot.documents
.map((snapshot) => builder(snapshot.data, snapshot.documentID))
.where((value) => value != null)
.toList();
if (sort != null) {
result.sort(sort);
}
return result;
});
}