Android Studio(Java)中Firestore条件查询链式调用问题排查
Firestore链式查询不生效的问题修复
你的问题出在Firestore查询对象的不可变性上:调用whereEqualTo()这类过滤方法时,不会修改原有的CollectionReference实例,而是返回一个包含新过滤条件的全新Query对象。你当前的代码只是调用了方法,但没有将返回的新对象保存下来,最后执行get()的还是最初没有任何过滤条件的colRef,所以会返回全部数据。
修正后的代码如下:
FirebaseFirestore db = FirebaseFirestore.getInstance(); Query query = db.collection("collection"); // 初始化为Query对象 if (!filter.isEmpty() && !filter.equals("All")) { query = query.whereEqualTo("tag", filter); // 将新的Query赋值回变量 } if (userId != null) { query = query.whereEqualTo("user_id", userId); // 同理,更新Query对象 } query.get(); // 执行带条件的查询
这样修改后,每个条件都会被叠加到Query对象上,最终执行的就是包含所有符合条件的查询请求了。
内容的提问来源于stack exchange,提问作者boringdeveloper
相关产品推荐
相关产品推荐

