如何针对EditText字符串测试Firebase数据库结果

时间:2019-08-18 16:42:44

标签: android firebase firebase-realtime-database

我正在开发一个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的值没有增加?

0 个答案:

没有答案