如何通过java检查firebase中是否已经存在用户输入的用户ID?
我尝试了很多方法来检查用户id是否已经在firebase中,但所有方法都是徒劳的。 下面是我的代码,用于检查用户id是否存在,但我输入的任何数据都不会显示所需的错误如何通过java检查firebase中是否已经存在用户输入的用户ID?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我尝试了很多方法来检查用户id是否已经在firebase中,但所有方法都是徒劳的。 下面是我的代码,用于检查用户id是否存在,但我输入的任何数据都不会显示所需的错误 userid = findViewById(R.id.userid); String userVal = userid.getEditText(). getText().toString(); boolean userquery = FirebaseDatabase.getInstance().getReference().chil
userid = findViewById(R.id.userid);
String userVal = userid.getEditText(). getText().toString();
boolean userquery = FirebaseDatabase.getInstance().getReference().child("user").orderByChild("userid").equals(userVal);
if(userquery) {
userid.setError("This user name already exists");
return;
}
每当我尝试在输入中添加现有值时,它都会接受该值并在数据库中进行覆盖
这是我的firebase数据库的屏幕截图
到目前为止,您的代码只设置了一个查询。它实际上并不执行查询,因此无法检测数据是否存在。为了,你必须去做 因此,在您的情况下,这可能类似于:
boolean userquery = FirebaseDatabase.getInstance().getReference().child("user").orderByChild("userid").equals(userVal);
userquery.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (!task.isSuccessful()) {
Log.e("firebase", "Error getting data", task.getException());
}
else if (task.getResult().exists()) {
userid.setError("This user name already exists");
}
}
});
“tash.getResult()”中的tash是什么?这是一个打字错误,应该是
任务。我已经修复了答案中的代码,但我也建议大家阅读一下任务,因为Android有一个非常基本的概念:userquery.get().addOnCompleteListener(new OnCompleteListener()
,在键入这一行之后,我会遇到无法解决的错误。get()方法您是否碰巧使用了旧SDK。此方法是几个月前引入的。在此之前,您只能使用addListenerForSingleValueEvent
来完成相同的操作:我对android studio非常陌生。您能告诉我如何检查SDK以及如何更改其版本使用第二种方法解决此问题吗
boolean userquery = FirebaseDatabase.getInstance().getReference().child("user").orderByChild("userid").equals(userVal);
userquery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
userid.setError("This user name already exists");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}