firebase 如何在Android Studio(Java)中使用Firestore链接条件查询

vbopmzt1  于 2023-02-13  发布在  Android
关注(0)|答案(1)|浏览(115)

我正在尝试用条件链接whereEqualTo()方法编写一个查询。
我试过做这样的事

FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference colRef = db.collection("collection");

if (!filter.isEmpty() && !filter.equals("All")) {
   colRef.whereEqualTo("tag", filter);
}

if (userId != null) {
   colRef.whereEqualTo("user_id", userId);
}

colRef.get();

如果过滤器等于“ABC”,那么我应该接收到tag为“ABC”的数据,但仍然返回所有数据。我做错了什么?

voj3qocg

voj3qocg1#

Firestore查询是不可变的,这意味着您不能更改现有查询的属性。如果您通过调用.whereEqualTo("tag", filter)更改值,则它将成为一个新查询。
所以要解决这个问题,请使用下面几行代码:

FirebaseFirestore db = FirebaseFirestore.getInstance();
Query colRef = db.collection("collection");
//👆

if (!filter.isEmpty() && !filter.equals("All")) {
   colRef = colRef.whereEqualTo("tag", filter);
   //👆
}

if (userId != null) {
   colRef = colRef.whereEqualTo("user_id", userId);
   //👆
}

colRef.get();

相关问题