Flutter中Firebase Firestore如何实现带OR条件的流式查询
Flutter Firestore OR 条件查询实现方案
Firebase Firestore 支持 OR 条件查询,你可以通过 Filter.or 方法组合多个查询条件实现 || 的逻辑,修改后的代码如下:
Future<Stream<QuerySnapshot>> getOrders() async { return FirebaseFirestore.instance .collection("Orders") .orderBy("timestamp") .where( Filter.or( Filter("isCredentialUploaded", isEqualTo: true), Filter("isTransactionDone", isEqualTo: true), ) ) .snapshots(); }
使用注意事项:
- 包含OR条件的复合查询需要提前在Firebase控制台创建对应复合索引,首次运行未创建索引的代码时,运行日志会输出对应索引的创建指引,按照指引操作即可完成配置。
- 单个
Filter.or最多支持传入10个过滤条件,可覆盖大部分业务场景。 - 如果你使用的
cloud_firestore插件版本低于2.0,需要先升级插件到2.0及以上版本才能使用Filter相关API。如果受项目限制无法升级,可以分别发起两个单独的条件查询,拿到结果后在客户端合并去重即可,该方案仅适合数据量较小的场景。
内容的提问来源于stack exchange,提问作者Sayed M. Idrees
相关产品推荐
相关产品推荐

