Save data to more than one node in Firebase

Asked

Viewed 99 times

0

Well I have the following code:

private void abrirCadastroContato() {

String emailContato;

emailContato = "email";

int contador = 1;

while (contador <=3) {

    if (contador == 1) {

        emailContato = "[email protected]";

    }

    if (contador == 2) {

        emailContato = "[email protected]";

    }


    if (contador == 3) {

        emailContato = "[email protected]";

    }

    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 ++;

}

}

In this code the goal is to register 3 records in Firebase, but when I run it, instead of creating 3 different nodes inside the contacts node, it creates only one node and changes it, not registering 3 different records, but only 1 record.

Expected result in firebase: resultado esperado Result obtained: resultado obtido

Debugging the code I realized that this bit below usually doesn’t run, I don’t know if it has anything to do with the problem but just a note.

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();

                    }


                }

My question is... How do I create a while similar to it that registers 3 different nodes in the Firebase database?

1 answer

0

you can do the following

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

                        if (dataSnapshot.getValue() != null) {
                            for(DataSnapshot snapshot: dataSnapshot.getChildren(){


                            //Recuperar dados do contato a ser adicionado
                            Usuario usuarioContato = snapshot.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();

                        }


                    }
  • I’m sorry, but what you’ve changed in the code?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.