2
I have a database with this structure:
what happens is that when creating a new user, I need to check if there is no longer a registered equal nickname, but I am not able to do this. Here’s the code that’s going wrong, with some comments on what I think should be right:
if (edtCadSenha.getText().toString().equals(edtCadConfirmaSenha.getText().toString())) {
referencia = ConfiguracaoFirebase.getFirebase();
//nessa linha, é definida a ordem de busca. no laço usuarios procurando por
//resultados onde o nick digitado pelo usuário seja igual a algum já cadastrado
//e, adicionando .limitToFirst(1), limita o número de resultados necessários
//para terminar a execução a um só.
Query buscaNick = 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"