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

232
Vistas
Firestore: escuche documentos basados en diferentes eventos después de la nueva fecha ()

Introducción

Estoy implementando una pantalla "Mis chats". Me interesa escuchar todos los nuevos cambios en mis chats, sin descargar la colección completa.

Para ello, he decidido ordenar mis consultas por campos de fecha.

Así es como se ve un documento de sala de chat en mi sistema:

 doc { ... deletedAt: null | date, lastMessage: { ..., date: date, deletedAt: null | date, }, readAt: null | date, }

Código de oyentes

Tengo diferentes tipos de "eventos" que necesito escuchar:

  1. Escuche nuevas salas de chat (una nueva sala de chat contendrá, con seguridad, un campo lastMessage.date)

  2. Escuche las actualizaciones de chatRoom.readAt

  3. Escuche las actualizaciones de chatRoom.deletedAt

  4. Escuche lastMessage.deletedAt actualizaciones

  5. Escuche las nuevas actualizaciones de lastMessage.date

Para escuchar nuevos chats, estoy haciendo:

 firestore .collection("chats") .where("membersArray", "array-contains", currentUser.uid) .where("deletedAt", "==", null) .orderBy("lastMessage.date") .startAt(new Date()) .onSnapshot(...);

Y, para escuchar los cambios de "readAt", después de new Date() y sin la necesidad de descargar toda la colección, estoy haciendo:

 firestore .collection("chats") .where("membersArray", "array-contains", currentUser.uid) .where("deletedAt", "==", null) .orderBy("readAt") .startAt(new Date()) .onSnapshot(...);

Problema

Ambos oyentes funcionan bien. Pero... como necesito detectar todos los cambios en la misma pantalla, puede haber intersecciones entre los resultados de ambos oyentes.

Esta es la única manera que se me ocurre de escuchar los diferentes tipos de eventos de mi colección y de una fecha específica, sin tener que leer todos los documentos.

Pregunta

¿Hay alguna forma de evitar todas estas posibles intersecciones? ¿O escuchar todos estos eventos diferentes a la vez, sin necesidad de crear diferentes oyentes o leer la colección completa?

Nota: Estoy usando querySnapshot.docChanges() para obtener cambios.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ambas consultas parecen leer exactamente el mismo conjunto de documentos, solo que en un orden diferente. En tal caso, normalmente leería los documentos con una sola consulta y luego los reordenaría según fuera necesario en el código de mi aplicación.

about 4 years ago · Juan Pablo Isaza 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