Java Firebase数据库中的多个等于
我正在开发一个血库应用程序,为了让它发挥作用,当用户请求特定类型的血液时,应该显示血型兼容的人。 例如:如果请求者的血型为AB-,则血型为O-、a-、B-、AB-的人应显示在Firebase Recycler视图中。但是,我了解到在一个查询中不能有多个equalTo()Java Firebase数据库中的多个等于,java,android,firebase-realtime-database,android-recyclerview,Java,Android,Firebase Realtime Database,Android Recyclerview,我正在开发一个血库应用程序,为了让它发挥作用,当用户请求特定类型的血液时,应该显示血型兼容的人。 例如:如果请求者的血型为AB-,则血型为O-、a-、B-、AB-的人应显示在Firebase Recycler视图中。但是,我了解到在一个查询中不能有多个equalTo() Query query = findDonorsRef.orderByChild("bloodGroup"); case "AB-": option = new F
Query query = findDonorsRef.orderByChild("bloodGroup");
case "AB-":
option = new FirebaseRecyclerOptions.Builder<FindDonors>()
.setQuery(query.equalTo("O-").equalTo("A-").equalTo("B-").equalTo("AB-"), FindDonors.class)
.build();
break;
Query Query=findDonorsRef.orderByChild(“bloodGroup”);
案例“AB-”:
选项=新建FirebaseRecyclerOptions.Builder()
.setQuery(query.equalTo(“O-”).equalTo(“A-”).equalTo(“B-”).equalTo(“AB-”),FindDonors.class)
.build();
打破
这导致应用程序崩溃,有人能提出任何建议吗。我要做的是在数据库中为每个用户设置一个
campatibleWith
属性。所以,与其比较每个兼容的血型以找到匹配的血型,不如比较用户是否与所需的血型兼容
通过向它传递您需要的血型,使您的查询更加动态
String neededBloodGroup = "AB-";
Query query = findDonorsRef.orderByChild("compatibleWith/".concat(neededBloodGroup)).equalTo(true);
然后,不必手动检查每个兼容性,只需查询数据库,因为上面已经完成了所有过滤
option = new FirebaseRecyclerOptions.Builder<FindDonors>()
.setQuery(query, FindDonors.class)
.build();
回答得好,丹尼尔!非常感谢你!我不得不修改注册代码,不管怎样,这非常有效!我希望有一天我能像你一样有批判性思维。
{
"-KdWh_9KVF16efcSdrji": {
// Example data
"name": "Daniel Guzmán",
"age": 24,
"gender": "male",
// Here's the trick
"bloodGroup": "A-",
"compatibleWith":{
"AB-": true
// All the compatible groups here
}
}
}