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

170
Views
La consulta de Firestore compara la marca de tiempo del servidor con la marca de tiempo del servidor anterior

Tengo una aplicación que mantiene una copia completa de los datos del usuario de forma local, pero necesita actualizaciones de Firestore cuando se modifica algún dato de forma remota. Para lograr esto, incluyo un serverTimestamp como un campo para todos los documentos de la base de datos, así:

 updateDoc(myDoc, { ...otherFields, lastUpdated: serverTimestamp() });

Y luego tengo un oyente de instantáneas para obtener actualizaciones. Verifico la marca de tiempo en cada documento y guardo el más reciente para consultas futuras (si lastTimestamp es nulo, consulto todos los documentos).

 let q = query(myCollection, where("lastUpdated", ">", lastTimestamp)); onSnapshot(q, (s) => s.docChanges().forEach((change) => { /*...*/ if(lastTimestamp.valueOf() < change.doc.data().lastUpdated.valueOf()) { lastTimestamp = change.doc.data().lastUpdated; } });

El problema es que mi consulta no parece funcionar: la instantánea no se activa en las actualizaciones. Aparentemente, mi where("lastUpdated", ">", lastTimestamp) no se procesa correctamente, ya que funciona bien si lo dejo fuera (para consultar todos los documentos, no es una solución permanente). ¿Existe una forma correcta de consultar documentos en función de un campo de marca de tiempo del servidor que me falta?

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

El problema, en mi caso, fue que guardé lastUpdated en localStorage y lo cargué, despojándolo de su información de tipo. Entonces, crear una instancia de una marca de tiempo ( import { Timestamp } from "firebase/firestore" ) resolvió el problema para mí:

 const ts = lastUpdatedFromLocalStorage; if(ts) lastUpdated = new Timestamp(ts.seconds, ts.milliseconds); else lastUpdated = null;
about 4 years ago · Santiago Gelvez 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!