Help with recovering nodes from Firebase

0

I want to recover all user followers on firebase.

I have the following structure in Firebase:

-seguidores
    -id amigo
        -id usuario 

For this structure I did the following to recover it:

    public void onDataChange(DataSnapshot dataSnapshot) {
        //Recupera dados de usuário logado
        usuarioLogado = dataSnapshot.getValue( Usuario.class );
        /*
         * Recuperar seguidores */
        DatabaseReference seguidoresRef = firebaseRef
                .child("seguidores")
                .child( idUsuarioLogado );
        seguidoresRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                seguidoresSnapshot = dataSnapshot;
                dialog.cancel();
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }

And I made a For as follows:

for( DataSnapshot seguidores: seguidoresSnapshot.getChildren() ){}

This way I retrieve all via the userid.

Now if my structure looks like this:

-usuarios
    -id usuario 

Using this code snippet:

DatabaseReference usuariosRef = firebaseRef
        .child("usuarios");
usuariosRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        usuariosSnapshot = dataSnapshot;

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

How would I make a for to retrieve the ids of this type of structure?

    
asked by anonymous 17.09.2018 / 13:59

1 answer

0

If I understood your structure correctly, let's look at an example:

- usuarios
    - idDouSUAriOAWcjvS_jG
        - id: "idDouSUAriOAWcjvS_jG"
        - nome: "Francisco João"
        - idade: 18

The user class might look like this:

public class Usuario {
    private String id;
    private String nome;
    private int idade;

    public Usuario() {}

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

}

To recover only (but all) ids:

DatabaseReference idsRef = firebaseRef.child("usuarios");
idsRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> ids = new ArrayList();

        for (DataSnapshot child : dataSnapshot.getChildren()){
            Usuario u = child.getValue(Usuario.class);
            ids.add(u.getId());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) { }
});

To recover all users:

DatabaseReference usuariosRef = firebaseRef.child("usuarios");
usuariosRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<Usuario> usuarios = new ArrayList();

        for (DataSnapshot child : dataSnapshot.getChildren()){
            Usuario u = child.getValue(Usuario.class);
            if (u != null) {
                usuarios.add(u);
            } 
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) { }
});

To recover a user by Id:

DatabaseReference usuarioRef = firebaseRef.child("usuarios").orderByChild("id").equalTo("idDouSUAriOAWcjvS_jG");
usuarioRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {     
        for (DataSnapshot child : dataSnapshot.getChildren()){
            Usuario franciscoJoao = child.getValue(Usuario.class);
            // Supostamente cada usuário com seu id
            // Se for usar algo como orderbyChild("idade").equalTo(18), não pare o loop
            break;
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) { }
});
    
18.09.2018 / 15:37