tipos runtransaction firestore datos data collection agregar java android firebase firebase-database

java - runtransaction - tipos de datos firebase



Listas anidadas en Firebase (1)

Esta pregunta ya tiene una respuesta aquí:

Intentando comprender cómo implementar listas anidadas en Firebase.

Problema que se puede reducir a: un sistema de mensajes de 1 a N, donde, para cada mensaje, desea mantener una lista de los usuarios que han recibido y leído ese mensaje.

He leído "Mejores prácticas para matrices en Firebase" . Tratando de evitar matrices, ya que tengo escrituras simultáneas, y simplemente no parecen una buena opción aquí.

Actualmente estamos tratando de lograr esto almacenando subárboles debajo de cada mensaje, cada subárbol es una lista de usuarios que han recibido, leído o realizado alguna acción X en el mensaje Y

"msgid0" : { "authorID": "uid0", "msg" : "message text", "ReceivedBy": { uid1 : true, uid2 : true } "ReadBy" : { uid1 : true } }

Pregunta: ¿Es posible poner una estructura de datos anidada como esta, directamente en un solo objeto?

Estoy probando crudamente un caso de prueba con lo siguiente:

public class Message { private Long authorID; private String msg; private List<String> receivedBy; private List<String> readBy; } ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot i: dataSnapshot.getChildren()){ Message_FB msg = i.getValue(Message_FB.class); } } }

Pero falla con:

Causado por: com.fasterxml.jackson.databind.JsonMappingException: no se puede deserializar la instancia de java.util.ArrayList fuera del token START_OBJECT


Ah, solo necesitaba usar Map lugar de List .

En mi caso:

public class Message { private Long authorID; private String msg; private Map<String, Boolean> receivedBy; private Map<String, Boolean> readBy; }

Ahora entiendo cómo usar estructuras recursivas con Firebase. Adivina como la mayoría de las cosas, es fácil, una vez que sabes cómo.