Dan*_*tiz 4 firebase flutter google-cloud-firestore
我一直在努力寻找基于某些可能添加或可能不添加的条件来执行具有多个条件查询的查询的正确方法。我尝试了多种方法,但没有效果。
Future<QuerySnapshot> searchStuff(StuffModel stuff) async {
CollectionReference col = _firestore.collection(Constants.stuffCollection);
Query query = col.where('uid', isEqualTo: stuff.uid);
if (stuff.who != null) {
query = query.where('who', isEqualTo: stuff.who);
}
if (stuff.what != null) {
query = query.where('what', isEqualTo: stuff.what);
}
if (stuff.where != null) {
query = query.where('where', isEqualTo: stuff.where);
}
if (stuff.when != null) {
query = query.where('when', isEqualTo: Timestamp.fromDate(stuff.when));
}
return await query.getDocuments();
}
Run Code Online (Sandbox Code Playgroud)
添加额外的评估后,对于非空值,在每种条件下,代码现在如下所示并且工作正常:
Future<QuerySnapshot> searchStuff(StuffModel stuff) async {
CollectionReference col = _firestore.collection(Constants.stuffCollection);
Query query = col.where('uid', isEqualTo: stuff.uid);
if (stuff.who != null && stuff.who.isNotEmpty) {
query = query.where('who', isEqualTo: stuff.who);
}
if (stuff.what != null && stuff.what.isNotEmpty) {
query = query.where('what', isEqualTo: stuff.what);
}
if (stuff.where != null && stuff.where.isNotEmpty) {
query = query.where('where', isEqualTo: stuff.where);
}
if (stuff.when != null) {
query = query.where('when', isEqualTo: Timestamp.fromDate(stuff.when));
}
return await query.getDocuments();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4451 次 |
最近记录: |