如何在不知道子对象的情况下,根据子对象内部的值获取子对象。在android firebase实时数据库中
我有一个用于药房帐户的节点,子节点是药房的id每个子节点包含药房的名称和id以及一些其他信息。现在我有了药房的名字,想得到药房的ID,有什么功能可以做到这一点吗如何在不知道子对象的情况下,根据子对象内部的值获取子对象。在android firebase实时数据库中,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个用于药房帐户的节点,子节点是药房的id每个子节点包含药房的名称和id以及一些其他信息。现在我有了药房的名字,想得到药房的ID,有什么功能可以做到这一点吗 您要查找的是一个数据库查询,它允许您根据属性值筛选节点下的结果 在这种情况下,应该是这样的: DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Pharmacies"); Query query = ref.orderByChil
您要查找的是一个数据库查询,它允许您根据属性值筛选节点下的结果 在这种情况下,应该是这样的:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Pharmacies");
Query query = ref.orderByChild("PharmacyName").equalTo("El Ezaby");
query.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (!task.isSuccessful()) {
Log.e("firebase", "Error getting data", task.getException());
}
else {
DataSnapshot result = task.getResult();
for (DataSnapshot snapshot: result.getChildren()) {
Log.i("firebase", snapshot.child("PharmacyID").getValue(String.class));
}
}
}
});
databasereferef=FirebaseDatabase.getInstance().getReference(“药房”);
Query Query=ref.orderByChild(“PharmacyName”).equalTo(“El-Ezaby”);
query.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
Log.e(“firebase”,“获取数据时出错”,task.getException());
}
否则{
DataSnapshot result=task.getResult();
对于(DataSnapshot快照:result.getChildren()){
Log.i(“firebase”、snapshot.child(“PharmacyID”).getValue(String.class));
}
}
}
});
由于查询可以有多个结果,因此需要循环result.getChildren()
。即使这里可能只有一个结果,您仍然需要循环。我使用了上面的代码,但query.get出现错误
下面的代码与我一起工作
非常感谢你的帮助和你的时间,我很感激。不客气。
DatabaseReference databaseReference1=FirebaseDatabase.getInstance().getReference("Pharmacies");
databaseReference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot:snapshot.getChildren()){
Pharmacies pharmacies=dataSnapshot.getValue(Pharmacies.class);
if(pharmacies!=null){
if(pharmacyName.contains(pharmacies.getPharmacyName())){
Log.e("firebase", dataSnapshot.child("PharmacyID").getValue(String.class));
pharmacyid=dataSnapshot.child("PharmacyID").getValue(String.class);
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});