根据数据库,我想在我想要搜索电子邮件的问题上寻求帮助,但是它无法处理收到的数据。我希望收到电子邮件已存在于数据库中的有价物品。
如何处理结果?这是尝试的代码:
DatabaseReference reg = FirebaseReferenciak.reg;
reg.orderByChild("email").equalTo("email", etEmail.getText().toString()).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, String> map = dataSnapshot.getValue(Map.class);
String value = map.get("name");
//Here is how do I check?
//String value = dataSnapshot.getValue(String.class);
dialog(value);
}
@Override
public void onCancelled(DatabaseError databaseError) {
dialog("error");
}
}
);
感谢您的帮助!!!
答案 0 :(得分:0)
对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
出于这个原因,您需要循环遍历DataSnapshot
中收到的onDataChange()
的孩子:
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String value = childSnapshot.child("name").getValue(String.class);
dialog(value);
}
}