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"