query para guardar example descargar datos configurar android firebase firebase-database

para - Android Firebase, simplemente obtenga los datos de un objeto hijo



guardar datos en firebase android (4)

Guardo mis datos de esta manera:

accountsTable -> key1 -> account1 key2 -> account2

para obtener datos de objetos:

accountsDb = mDatabase.child("accountsTable"); accountsDb.child("some key").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { try{ Account account = snapshot.getChildren().iterator().next() .getValue(Account.class); } catch (Throwable e) { MyLogger.error(this, "onCreate eror", e); } } @Override public void onCancelled(DatabaseError error) { } });

He estado buscando una forma de obtener los datos de un objeto hijo en Android Firebase.

He encontrado cosas como Firebase recuperar Android niño . Todas las soluciones sugieren utilizar un "ChildEventListener", sin embargo, necesito obtener estos datos en este momento, no cuando se mueven, eliminan, actualizan, etc.

Mis datos se guardan en https: //.firebaseio.com/users//creation como una cadena. Me imagino que debe haber alguna forma simple de acceder a eso sin tener que hacer demasiado, porque si copio la URL exacta en mi navegador, puedo ver la: ''creación:'' 2015/05/31 21:33:55 '''' ahí en mi "Firebase Forge Dashboard".

¿Cómo puedo acceder a esto sin un oyente?


Usted no lee directamente un valor. Puede establecerlo con .setValue() , pero no hay .getValue () en el objeto de referencia.

Tienes que usar un oyente. Si solo desea leer el valor una vez, use ref.addListenerForSingleValueEvent() .

Ejemplo:

Firebase ref = new Firebase("YOUR-URL-HERE/PATH/TO/YOUR/STUFF"); ref.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String value = (String) dataSnapshot.getValue(); // do your stuff here with value } @Override public void onCancelled(FirebaseError firebaseError) { } });

Fuente: https://www.firebase.com/docs/android/guide/retrieving-data.html#section-reading-once


solo obtengo datos de nodo específicos y funciona perfecto para mí

mFirebaseInstance.getReference("yourNodeName").getRef().addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { Log.e(TAG, "======="+postSnapshot.child("email").getValue()); Log.e(TAG, "======="+postSnapshot.child("name").getValue()); } } @Override public void onCancelled(DatabaseError error) { // Failed to read value Log.e(TAG, "Failed to read app title value.", error.toException()); } });


Los oyentes de Firebase disparan tanto para los datos iniciales como para los cambios.

Si está buscando sincronizar los datos en una colección, use ChildEventListener . Si está buscando sincronizar un solo objeto, use ValueEventListener . Tenga en cuenta que en ambos casos no está "obteniendo" los datos. Lo está sincronizando, lo que significa que la devolución de llamada se puede invocar varias veces: para los datos iniciales y siempre que los datos se actualicen.

Esto está cubierto en la guía de inicio rápido de Firebase para Android . El código relevante y la cita:

FirebaseRef.child("message").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { System.out.println(snapshot.getValue()); //prints "Do you have data? You''ll love Firebase." } @Override public void onCancelled(DatabaseError databaseError) { } });

En el ejemplo anterior, el evento de valor se activará una vez para el estado inicial de los datos, y luego nuevamente cada vez que cambie el valor de esos datos.

Por favor, dedique unos minutos a pasar por ese comienzo rápido. No debería tomar más de 15 minutos y le evitará muchos arañazos y preguntas. La Guía de Firebase para Android es probablemente un buen próximo destino, específicamente para esta pregunta: https://firebase.google.com/docs/database/android/read-and-write