应用像codelab(Cloud Firestore)中的查询过滤器不起作用

时间:2018-01-21 08:19:18

标签: google-cloud-firestore

我正在使用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) {



            }
        }
    });

1 个答案:

答案 0 :(得分:0)

我想通了,似乎我没有按如下方式将过滤器分配给查询对象:

query = query.whereEqualTo("fieldPath" , ...);