Firebase obtiene el último id – limitToLast no funciona – android
Estoy tratando de obtener el último id de mi nodo de mensajes, pero no está consiguiendo el último. Por ejemplo, mi último identificador es 12, pero siempre devuelve el id del ítem 10. Mi código es así:
final Query query = firebase.orderByChild("messageId").limitToLast(1); query.addListenerForSingleValueEvent(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { Log.i("MessagesFrag","snapshot: "+dataSnapshot.getValue()+""); } public void onCancelled(FirebaseError firebaseError) {} });
Devuelve algo como esto:
- Background Servicio con Firebase childeventlistener no funciona después de unos minutos
- Llame a la base de datos de Firebase desde Google App Engine
- Problemas al actualizar la nueva versión 10.2.0 de PlayServices y Firebase
- La clave de API para GCM es repentinamente inválida? Error no autorizado (401)
- El inicio de la aplicación se ralentiza: No se puede abrir '/system/framework/dpmapi.jar'
{10={chatId=6, time=Wed Apr 13 22:20:43 EDT 2016, message=hi, user=123, messageId=10}}
Debe devolver:
{12={chatId=6, time=Wed Apr 13 22:29:02 EDT 2016, message=I am fine, user=1234, messageId=12}}
Mis datos son algo como esto:
messages 9: chatId: "6" message: "hi" messageId: "9" time: "Wed Apr 13 22:29:02 EDT 2016" user: "123" 10: chatId: "6" message: "hello" messageId: "10" time: "Wed Apr 13 22:29:02 EDT 2016" user: "1234" 11: chatId: "6" message: "how are you?" messageId: "11" time: "Wed Apr 13 22:29:02 EDT 2016" user: "123" 12: chatId: "6" message: "I am fine" messageId: "12" time: "Wed Apr 13 22:29:02 EDT 2016" user: "1234"
Además de eso, cuando cambio "LimitToLast" a "LimitToFirst" (que debería obtener el primero), no obtiene el primer elemento que tengo (nodo 1), obtiene el nodo 10 también.
¿Alguien sabe cuál puede ser el problema?
- Cómo mantener la escucha de servlets de App Engine en Firebase
- Adición de Analytics de Firebase y Google Analytics en la aplicación para Android
- Recuperar ServerValue.Timestamp de Firebase en la aplicación de Android, cuando se envían los datos
- ¿Es posible guardar la notificación de tema Firebase guardar en sqlite cuando la aplicación está cerca en android
- No se puede encontrar la dependencia com.google.android.gms: play-services-ads-lite:
- Firebase + Android - Notificaciones ChildAdded - ¿Cómo obtener sólo New Childs?
- Contar todos los valores Firebase Java API
- Google Play Games, Firebase y el nuevo inicio de sesión de Google
Creo que el problema es orderByChild
, ya que los mensajes se ordenan de forma numérica, no hay necesidad de ordenarlos de nuevo. prueba esto :
FirebaseDatabase database = FirebaseDatabase.getInstance(); // change this to your databae ref final DatabaseReference messages = database .getReference("XXXX") .child("XXXX"); // change this to your databae ref messages .limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if (dataSnapshot.exists()) { // access last message DataSnapshot messageSnapShot= dataSnapshot.getChildren().iterator().next(); } } @Override public void onCancelled(DatabaseError databaseError) { } });
- Copia de seguridad y restaurar widgets pantalla de inicio y fondo de pantalla en vivo
- No se puede detectar la vista web Appium