我有这个数据库:
我想查明电子邮件(数据库中的值)是否已存在。因此,我必须迭代“email”的每个子级,并检查该值是否等于字符串 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) {
}
});
总之,如果我输入 person1@m.de,它应该会提示它存在
最佳答案
这是一个非常简单的方法。让你的电子邮件像 child 一样。您必须替换电子邮件中的点并将其设置为子项。 (您不能直接使用电子邮件发送给 child )
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) {
}
});
关于java - 如何检查firebase数据库中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673887/