Android Firebase, simplemente obtiene los datos de un objeto secundario
He estado buscando una manera de obtener los datos de un objeto secundario en Android Firebase.
He encontrado cosas como Firebase recuperar niño Android . Todas las soluciones están sugiriendo usar un "ChildEventListener", sin embargo necesito conseguir estos datos en este momento, no cuando se mueve, se suprime, se pone al día, etcétera.
- Cómo comprobar si la tarea de escritura tuvo éxito en Firebase
- ¿Cómo agregar seguimiento de pantalla / tiempos en Firebase Analytics?
- ¿Se pueden eliminar las propiedades de usuario de Firebase Analytics?
- ¿Cómo implemento un observador para obtener datos de un oyente?
- Firebase: Consulta para excluir datos basados en una condición
Mis datos se guardan en https: //.firebaseio.com/users//creation como una cadena. Creo que debe haber alguna manera sencilla de acceder a eso sin necesidad de hacer demasiado, porque si copio la URL exacta a mi navegador, puedo ver el: 'creation: "2015/05/31 21:33:55"' Justo allí en mi "Firebase Forge Dashboard".
Si alguien sabe cómo acceder a este sin un oyente para un cambio que sería apreciado!
¡Gracias!
- ¿Cuál es la diferencia entre las interfaces ChildEventListener y ValueEventListener Firebase?
- Convertir mapa a bundle en android
- Cómo agregar nuevos datos en firebase android
- Quitar el token FCM del grupo de dispositivos Firebase
- Aplicación de chat que utiliza Firebase: Recibe notificación cuando recibe un nuevo mensaje - Android
- OAuth2 problemas después de actualizar firebase
- ¿Pueden los mensajes de la nube de firebase ser detectados por la aplicación en segundo plano?
- Utilizar DB de Firebase con DB local
Los oyentes de Firebase disparan tanto los datos iniciales como los cambios.
Si está buscando sincronizar los datos de una colección, utilice ChildEventListener
. Si está buscando sincronizar un solo objeto, utilice ValueEventListener
. Tenga en cuenta que en ambos casos no está "recibiendo" 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 actualizan.
Esto está incluido en la guía de inicio rápido de Firebase para Android . El código relevante y la cotización:
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 disparará una vez para el estado inicial de los datos y, de nuevo, cada vez que cambie el valor de esos datos.
Por favor, pasar unos momentos para pasar por ese comienzo rápido. No debe tomar más de 15 minutos y le ahorrará de un montón de rascarse la cabeza y preguntas. La Firebase Android Guide es probablemente un buen destino para esta pregunta: https://firebase.google.com/docs/database/android/read-and-write
No lees directamente un valor. Puede establecerlo con .setValue()
, pero no hay .getValue () en el objeto de referencia.
Tienes que usar un oyente. Si sólo desea leer el valor una vez, utilice 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 busco datos específicos de nodos y su funcionamiento 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()); } });
Almaceno 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) { } });
- Error de VideoView getCurrentPosition () en Acer Iconia A200
- Información de la pista de la música que se está reproduciendo actualmente