我正在尝试用条件链接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”的数据,但仍然返回所有数据。我做错了什么?
1条答案
按热度按时间voj3qocg1#
Firestore查询是不可变的,这意味着您不能更改现有查询的属性。如果您通过调用
.whereEqualTo("tag", filter)
更改值,则它将成为一个新查询。所以要解决这个问题,请使用下面几行代码: