此代码返回错误。谁能指导我有什么问题吗?
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();
问题很可能出在这里:
Query query = dbRef.orderByChild("filter").equalTo(passed,dbRef2.child("location").toString());
如果有多个节点具有相同的filter
value.,第二个参数equalTo
用于进一步限制返回的结果。确实如此not指示要过滤的属性的名称,您可能会想到这一点。
要过滤的完整路径,需要在调用中orderByChild
。因此,如果您想订购/过滤filter/location
每个子节点的属性,即:
Query query = dbRef.orderByChild("filter/location").equalTo(passed);
Update:因为您表示想要对两个属性进行排序/过滤。
Firebase 数据库查询只能对单个属性进行排序/过滤。在许多情况下,可以将要过滤的值组合到单个(合成)属性中。例如,在您的情况下,您可以订购/过滤"location_specialization": "locationValue_specializationValue"
.
有关此方法和其他方法的示例,请参阅我的回答:Firebase中基于多个where子句的查询 https://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)