Saltar al contenido

Cómo obtener la clave del valor en firebase

Solución:

Eso es porque estás usando un ValueEventListener. Si la consulta coincide con varios hijos, devuelve una lista de todos esos hijos. Incluso si solo hay un niño que coincide, sigue siendo una lista de uno. Y ya que estas llamando getKey() en esa lista, obtiene la clave de la ubicación donde ejecutó la consulta.

Para obtener la clave de los hijos de coincidencias, recorra los hijos de la instantánea:

mDatabase.child("clubs")
         .orderByChild("name")
         .equalTo("efg")
         .addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            String clubkey = childSnapshot.getKey();

Pero tenga en cuenta que si asume que el nombre del club es único, también puede almacenar los clubes bajo su nombre y acceder al correcto sin una consulta:

mDatabase.child("clubs")
         .child("efg")
         .addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String clubkey = dataSnapshot.getKey(); // will be efg

Si alguien necesita hacer esto usando Kotlin:

mDatabase.child("clubs")
        .orderByChild("name")
        .equalTo("efg")
        .addListenerForSingleValueEvent(object: ValueEventListener {

            override fun onDataChange(dataSnapshot: DataSnapshot) {

                dataSnapshot.children.forEach {
                     //"it" is the snapshot
                     val key: String = it.key.toString()
                }
            }

            override fun onCancelled(p0: DatabaseError) {
                    //do whatever you need
            }
         })
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *