Salvar dados em mais de um nó no Firebase

  • Respostas:0
Luis Felipe
  • Posts no fórum: 7

01/08/2018, 15:50:24 via Web

Bom tenho o seguinte código:

private void abrirCadastroContato() {

String emailContato;

emailContato = "email";

int contador = 1;

while (contador <=3) {

    if (contador == 1) {

        emailContato = "vendas@tecmaf.com.br";

    }

    if (contador == 2) {

        emailContato = "assistencia@tecmaf.com.br";

    }

    if (contador == 3) {

        emailContato = "suprimentos@tecmaf.com.br";

    }

    identificadorContato = Base64Custom.codificarBase64(emailContato);

    firebase = ConfiguracaoFirebase.getFirebase().child("usuarios").child(identificadorContato);

    firebase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if (dataSnapshot.getValue() != null) {

                //Recuperar dados do contato a ser adicionado
                Usuario usuarioContato = dataSnapshot.getValue(Usuario.class);

                //Recuperar identificador usuario logado (base64)
                Preferencias preferencias = new Preferencias(MainActivity.this);
                String identificadorUsuarioLogado = preferencias.getIdentificador();

                firebase = ConfiguracaoFirebase.getFirebase();
                firebase = firebase.child("contatos")
                        .child(identificadorUsuarioLogado)
                        .child(identificadorContato);

                Contato contato = new Contato();
                contato.setIdentificadorUsuario(identificadorContato);
                contato.setEmail(usuarioContato.getEmail());
                contato.setNome(usuarioContato.getNome());

                firebase.setValue(contato);

            } else {

                Toast.makeText(MainActivity.this, "Usuário não possui cadastro.", Toast.LENGTH_LONG).show();

            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    contador ++;

}

}

Nesse código o objetivo é fazer com que seja cadastro 3 registros no Firebase, porem quando eu executo ele, ao invés de criar 3 nós diferentes dentro do nó contatos, ele cria somente um nó e fica alterando ele, não cadastrando 3 registros diferentes, mas sim apenas 1 registro.

Resultado esperado no firebase:
image

Resultado obtido: Apenas um nó dentro do nó "dGVzdGU0QGdtYWlsLmNvbQ=="

Depurando o código percebi que esse trecho a baixo geralmente não é executado, não sei se tem alguma coisa a ver com o problema mas apenas uma observação.

firebase.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    if (dataSnapshot.getValue() != null) {

                        //Recuperar dados do contato a ser adicionado
                        Usuario usuarioContato = dataSnapshot.getValue(Usuario.class);

                        //Recuperar identificador usuario logado (base64)
                        Preferencias preferencias = new Preferencias(MainActivity.this);
                        String identificadorUsuarioLogado = preferencias.getIdentificador();

                        firebase = ConfiguracaoFirebase.getFirebase();
                        firebase = firebase.child("contatos")
                                .child(identificadorUsuarioLogado)
                                .child(identificadorContato);

                        Contato contato = new Contato();
                        contato.setIdentificadorUsuario(identificadorContato);
                        contato.setEmail(usuarioContato.getEmail());
                        contato.setNome(usuarioContato.getNome());

                        firebase.setValue(contato);

                    } else {

                        Toast.makeText(MainActivity.this, "Usuário não possui cadastro.", Toast.LENGTH_LONG).show();

                    }

                }

Minha questão é… Como faço para criar um while semelhante a ele que cadastre 3 nós diferentes no banco de dados Firebase?

— alterado em 01/08/2018, 15:51:30

Seja o primeiro a responder