Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
Serialización de Firestore DocumentReference

Tengo un pojo que mapea un documento de Firestore. Ese documento contiene referencias a otros documentos de otra colección.

 class Game(var local: String? = null, var visitor: String? = null, var events: MutableList<DocumentReference> = mutableListOf(), var date: Date? = null): Serializable

El problema es que DocumentReference no es serializable. He leído que puedo guardar la ruta como String y luego crear el objeto yo mismo (FirebaseFirestore.getInstance().document(path)), pero luego en Firestore ya no hay un campo de tipo Referencia.

Entonces mi pregunta, ¿Es este el buen enfoque? Además, ¿importa que el campo sea una cadena en lugar de una referencia?

Saludos, Diego

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Entonces mi pregunta es, ¿es este el buen enfoque?

Sí, lo es. La parte más importante de una DocumenetReference es la ruta de la cadena. Si serializa eso, puede reconstituir un objeto DocumentReference, muy fácil.

Como conclusión, si necesita serializar un objeto DocumentReference , use el método getPath() de DocumentReference para obtener una cadena literal que represente la ubicación del documento en la base de datos. Para deserializar esa cadena de ruta nuevamente en un objeto DocumentReference , simplemente use FirebaseFirestore.getInstance().document(path) .

Editar:

Esto implica que el campo en la base de datos ahora es una Cadena en lugar de una Referencia.

Así es.

¿Importa? Supongo que ser un Reference debe tener algún tipo de ventaja.

Sí, dado que ahora la propiedad es de tipo String, ya no puede aprovechar lo que proporciona la clase DocumentReference . Pero esta es la solución que puede ayudarlo a lograr lo que desea. La clase de cadena es serializable mientras que la de DocumentReference no lo es.

over 4 years ago · Santiago Trujillo Denunciar

0

Tengo una respuesta elaborada aquí . el codigo es

 private ArrayList<String> docRefToString(ArrayList<DocumentReference> products) { ArrayList<String> newProducts = new ArrayList<String>(); for (DocumentReference product : products) { newProducts.add(product.getPath()); } return newProducts; } private ArrayList<DocumentReference> docStringToDoc(ArrayList<String> products) { ArrayList<DocumentReference> newProducts = new ArrayList<DocumentReference>(); for (String product : products) { newProducts.add(FirebaseFirestore.getInstance().document(product)); } return newProducts; }

Y en la implementación Parcel..

 private Request(Parcel in) { ... ArrayList<String> strProducts = in.createStringArrayList(); this.products = docStringToDoc(strProducts); ... } @Override public void writeToParcel(Parcel dest, int flags) { ... dest.writeStringList(docRefToString(this.products)); ... }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda