gpt4 book ai didi

java - 如何避免 firebase 实时数据库中的重复数据

转载 作者:太空狗 更新时间:2023-10-29 13:02:25 24 4
gpt4 key购买 nike

我目前正在开发一个 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 消息,但在数据仍然进入数据库后,我想取消重复数据。

最佳答案

创建新帐户或注册过程时,您可以检查用户是否已经存在,例如:

.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
boolean isNewUser = task.getResult().getAdditionalUserInfo().isNewUser();
//retruns true if user is new
//false if user exits, move on login screen/forgot password etc.

}
})

并且您已阻止使用相同的电子邮件地址创建帐户,这实际上会造成不必要的检查 email 地址是否存在于数据库中,因为不可能使用相同的 email 创建新帐户地址了。

如果您仍想检查数据库中是否存在电子邮件地址,您可以运行简单的查询:

databaseReference.orderByChild("Email").equalTo(email).addListenerForSingleValueEvent....

如果电子邮件存在则返回数据,如果不存在则数据库中没有该电子邮件的用户。

关于java - 如何避免 firebase 实时数据库中的重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54076590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com