Check if a value exists in the Firebase Realtime Database

0

I have a database with this structure:

Whathappensisthatwhencreatinganewuser,Ineedtocheckifthereisnolongeranequalregisterednickname,butIcannotdothat.Hereisthecodethatisgoingwrong,withsomecommentsofwhatIthinkshouldberight:

if(edtCadSenha.getText().toString().equals(edtCadConfirmaSenha.getText().toString())){referencia=ConfiguracaoFirebase.getFirebase();//nessalinha,édefinidaaordemdebusca.nolaçousuariosprocurandopor//resultadosondeonickdigitadopelousuáriosejaigualaalgumjácadastrado//e,adicionando.limitToFirst(1),limitaonúmeroderesultadosnecessários//paraterminaraexecuçãoaumsó.QuerybuscaNick=referencia.child("usuarios").orderByChild("nickname").equalTo(edtCadNickname.getText().toString()).limitToFirst(1);
                buscaNick.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //se cair aqui, significa que encontrou um nick igual

                        Toast.makeText(CadastroActivity.this, "Esse nick já existe, escolha outro por favor!", Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        //se caiu aqui, significa que não tem um nick igual no bd, então
                        //o usuário pode seguir o cadastro normalmente.
                        usuarios = new Usuarios();
                        //recupera todos os valores nos campos preenchidos na tela pelo usuário
                        //e armazena no objeto de usuário
                        usuarios.setNome(edtCadNome.getText().toString());
                        usuarios.setNickname(edtCadNickname.getText().toString());
                        usuarios.setEmail(edtCadEmail.getText().toString());
                        usuarios.setSenha(edtCadSenha.getText().toString());
                        usuarios.setAniversario(edtCadAniversario.getText().toString());
                        //faz a checagem de qual botão de radio está selecionado para preencher o campo sexo
                        if (rbFeminino.isChecked()) {
                            usuarios.setSexo("Feminino");
                            cadastrarUsuario();
                        } else if(rbMasculino.isChecked()) {
                            usuarios.setSexo("Masculino");
                            cadastrarUsuario();
                        }

In the example, the query only falls in the first example, and shows the message "This nick already exists"

    
asked by anonymous 04.12.2018 / 14:25

0 answers