【发布时间】:2019-01-07 14:47:51
【问题描述】:
我目前正在开发一个 Android 应用程序,我使用 firebase(实时功能)作为后端服务。此外,我还开发了这个功能,如下所示。
private void checkUserExisting (){
Dataa = mRef.getReference().child("Users");
Dataa.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.exists()){
CreateUserProfile();
}else {
final String Uname = name.getText().toString().trim();
final String Email = emailAddress.getText().toString().trim();
Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
while (dataSnapshots.hasNext())
{
DataSnapshot dataSnapshotChild = dataSnapshots.next();
String EmailAddress = dataSnapshotChild.child("Email").toString();
String UserName = dataSnapshotChild.child("UserName").toString();
if (Uname.equals(UserName) || Email.equals(EmailAddress)){
Toast.makeText(Sgin_Up.this,"This user already exists",Toast.LENGTH_LONG).show();
break;
}else {
CreateUserProfile();
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
扩展 该代码运行良好,它检查现有数据并显示 Toast 消息,但在数据仍进入数据库后,我想取消重复数据。
【问题讨论】:
-
考虑到电子邮件地址是唯一的,您可以通过运行单个查询轻松解决该问题,该查询将检查
email是否存在于数据库中,并在注册期间防止使用相同的电子邮件创建帐户。 -
if (dataSnapshotChild.child("Email").exists()){ } 可以解决问题@Yupi
-
email变量存在,我需要将数据与注册阶段填写的数据进行比较,如果我必须通过异常并防止和避免重复数据
-
更新答案。
标签: java android firebase firebase-realtime-database