这个orderbychild firebase实时代码有什么问题?

r55awzrz  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(298)

此代码返回一个错误。有谁能告诉我这有什么问题吗?

DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("Doctor");

dbRef.keepSynced(true);

DatabaseReference dbRef2 = FirebaseDatabase.getInstance().getReference("Patient").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
Query query = dbRef.orderByChild("filter").equalTo(passed,dbRef2.child("location").toString());

FirebaseRecyclerOptions<DoctorHelperClass> options = new FirebaseRecyclerOptions.Builder<DoctorHelperClass>()
                .setQuery(query, DoctorHelperClass.class).build();
j8ag8udp

j8ag8udp1#

问题可能在这里:

Query query = dbRef.orderByChild("filter").equalTo(passed,dbRef2.child("location").toString());

如果有多个节点具有相同的 filter 值,第二个参数 equalTo 用于进一步限制返回的结果。它并没有指明要筛选的属性的名称,您可能会这样想。
要筛选的完整路径需要位于对的调用中 orderByChild . 因此,如果您想在 filter/location 每个子节点的属性,即:

Query query = dbRef.orderByChild("filter/location").equalTo(passed);

更新:因为您表示要对两个属性进行排序/筛选。
firebase数据库查询只能对单个属性进行排序/筛选。在许多情况下,可以将要筛选的值组合到单个(合成)特性中。例如,在您的情况下,您可以订购/筛选 "location_specialization": "locationValue_specializationValue" .
有关此方法和其他方法的示例,请参见我的答案:基于firebase中多个where子句的查询

相关问题