我有这个数据库:
我想找出电子邮件(数据库中的值)是否已经存在。因此,我必须遍历“电子邮件”的每个子对象,并检查该值是否等于字符串inputMail。
我尝试了以下代码,但是它不起作用,有人可以帮我吗?谢谢你
final String input_mail = et_email.getText().toString();
DatabaseReference email = FirebaseDatabase.getInstance().getReference().child("email");
email.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String emailVal = ds.getValue(String.class);
if (emailVal.equals(input_mail)) {
//Toast exists
}
else {
//Toast not exists
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
结论是,如果我输入[email protected],应该吐司它存在
这是一个非常简单的方法。让您的电子邮件作为孩子。您必须替换电子邮件中的点并将其设置为子节点。
static String encodeUserEmail(String userEmail) {
return userEmail.replace(".", ",");
}
static String decodeUserEmail(String userEmail) {
return userEmail.replace(",", ".");
}
然后您可以像这样轻松地将其匹配:
final String input_mail = et_email.getText().toString();
DatabaseReference email = FirebaseDatabase.getInstance().getReference().child("email");
email.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(datasnapshot.child(input_mail).exits){
//Toast exists
}else {
//Toast not exists
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});