gpt4 book ai didi

firebase - 使用多个条件 where 子句的 Flutter Cloud FireStore 查询

转载 作者:行者123 更新时间:2023-12-05 01:15:08 25 4
gpt4 key购买 nike

我一直在努力寻找正确的方法来执行多个条件查询,这些条件查询基于某些可能添加也可能不添加的条件。我尝试了几种方法,但都不起作用。

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();
}

最佳答案

添加额外的评估后,对于非空值,在每个条件下,代码现在看起来像这样并且工作正常:

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();
}

关于firebase - 使用多个条件 where 子句的 Flutter Cloud FireStore 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56820548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com