我正在使用firestore来存储我的项目数据,我的问题是我不能 按照codelab过滤器的方式过滤数据。该查询的结果为我提供了整个集合文档,这意味着过滤器不起作用。 我已经尝试了很多变通方法并且发现只有当我级联whereEqualto() 一行中的方法我得到了我想要的特定文档,但是这种方法(级联whereEqualTo inline)在为用户提供过滤搜索的方法时不灵活。我只想知道为什么该代码对我不起作用。
//不起作用
Query query = mFirestore.collection("restaurants");
// Category (equality filter)
if (filters.hasCategory()) {
query = query.whereEqualTo("category", filters.getCategory());
}
// City (equality filter)
if (filters.hasCity()) {
query = query.whereEqualTo("city", filters.getCity());
}
这有效:
query.whereEqualTo("realEstateType", realEstateType).whereEqualTo("propertyStatus", propertyStatus).whereEqualTo("propertyPhysicalStatus", propertyPhysicalConditionS).addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
}
}
});
答案 0 :(得分:0)
我想通了,似乎我没有按如下方式将过滤器分配给查询对象:
query = query.whereEqualTo("fieldPath" , ...);