在Firebase数据库中进行Android搜索

时间:2016-11-24 18:24:40

标签: android firebase firebase-realtime-database

根据数据库,我想在我想要搜索电子邮件的问题上寻求帮助,但是它无法处理收到的数据。我希望收到电子邮件已存在于数据库中的有价物品。

如何处理结果?这是尝试的代码:

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");
        }
    }
);

感谢您的帮助!!!

1 个答案:

答案 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);
    }
}