我正在开发一个android应用,我想确保Firebase数据库中的用户名节点具有唯一的内容。
我所做的是,当用户想要更新新的配置文件时,testUsername()方法进入数据库并浏览以查看用户名是否已经存在。如果是,则isUsernameExist整数增加1(它初始化为0)。
因此,在注册之前,将测试isUsernameExist的值。如果它大于0,它将停止注册。我的问题是,即使存在该值,isUsernameExist也不增加。
\ DatabaseReference的声明
usernameRef = FirebaseDatabase.getInstance().getReference().child("users");
//测试用户名是否已存在:
private void testUsername(final String testUsername){
usernameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String result = "";
for(DataSnapshot ds : dataSnapshot.getChildren()){
result = ds.child("username").getValue().toString();
if(result.equalsIgnoreCase(testUsername)){
isUsernameExist = isUsernameExist+1;
} else {
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
//下面的代码在注册之前已经过测试
testUsername(username);
if(isUsernameExist > 0){
dialog.dismiss();
nameEditText.setError("Username taken...");
nameEditText.requestFocus();
Toast.makeText(UpdateProfile.this, "Username not available. Choose a different one...", Toast.LENGTH_LONG).show();
return;
} else {
registerUser();
}
为什么int isUsernameExist的值没有增加?