Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

231
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!