首页 > 解决方案 > 无法获得输出“用户名已被使用!” 当我输入已存储在数据库中的用户名时

问题描述

这是数据库结构

数据库参考

DatabaseReference referSales;
referSales = FirebaseDatabase.getInstance().getReference("Sales");

用户名验证(包括密码验证)

referSales.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(!(edtPassword.getText().toString()).equals(edtConfirmPassword.getText().toString())) {
                    loadingDialog.dismiss();
                    Toast.makeText(Registration.this, "Password and Confirm Password are not identical!", Toast.LENGTH_SHORT).show();

                    if(dataSnapshot.child(edtUsername.getText().toString()).exists()){
                    loadingDialog.dismiss();
                    Toast.makeText(Registration.this, "Username has been used!", Toast.LENGTH_SHORT).show();
                    }

更新数据库

当输入的用户名与数据库中存储的用户名不重复,密码和确认密码相同时,新的用户信息将被添加到数据库中。

                }else{
                    loadingDialog.dismiss();
                    final Sales salesperson = new Sales(edtFirstName.getText().toString(),edtLastName.getText().toString(),
                            edtPhoneNo.getText().toString(),edtEmail.getText().toString(), edtUsername.getText().toString(),
                            edtPassword.getText().toString(),edtConfirmPassword.getText().toString());
                    referSales.child(edtUsername.getText().toString()).setValue(salesperson).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> salesperson) {
                            if(salesperson.isSuccessful()){
                                Toast.makeText(Registration.this, "Added Successfully!", Toast.LENGTH_SHORT).show();
                                finish();
                            }
                        }
                    });

                }

            }

标签: javaandroidfirebase

解决方案


您可以查询数据库以检查用户名是否已在您的数据库中使用。

 Query query = databaseReference.child("users").orderByChild("userName")
                    .equalTo(edtUserName.getText().toString().trim();

query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    if(dataSnapshot.exists()){
                        //user exist

                        Toast.makeText(getApplicationContext(),"Usename Has been used" ,
                                Toast.LENGTH_LONG).show();
                    }else{

                        //CREATE THE USER
                    }

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

推荐阅读