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

223
Views
marcas de tiempo de firebase no creadas en el servidor

Tengo una aplicación de chat en reaccionar nativo usando firebase y es crucial para mí que las marcas de tiempo estén todas sincronizadas y creadas en el servidor, no desde el cliente. Los clientes pueden tener diferentes tiempos dependiendo de la configuración en el teléfono móvil.

Probé la siguiente función para probar mi punto:

 const comparetimes = async () => { const timezone1 = firebase.firestore.Timestamp.now(); const timezone2 = (firebase.firestore.Timestamp.now()).toMillis(); const timezone3 = Date.now(); console.log(timezone1); console.log(timezone2); console.log(timezone3) }

Lo que me sorprendió es el resultado de esta función:

 {"nanoseconds": 79000000, "seconds": 1641054839} 1641054839080 1641054839080

Aparentemente, la marca de tiempo de Firebase es exactamente la misma que Date.now() que es una marca de tiempo directa tomada del teléfono móvil y, por lo tanto, no es precisa.

¿Qué puedo hacer para que las marcas de tiempo no sean creadas por el cliente sino por el servidor, en este ejemplo de base de fuego? ¿Necesito verificar algunas API o hay algo que extraño aquí?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Cuando llama a Timestamp.now() , en realidad solo está tomando la marca de tiempo en el dispositivo cliente. Eso es de esperar.

Lea la documentación sobre cómo usar las marcas de tiempo del servidor. Debe usar el valor del token devuelto por firestore.FieldValue.serverTimestamp() para indicarle a Firestore que use el momento actual cuando la solicitud llega al servidor.

Al almacenar marcas de tiempo, se recomienda utilizar el método estático serverTimestamp en la clase FieldValue. Cuando se escriben en la base de datos, los servidores de Firebase escribirán una nueva marca de tiempo en función de su tiempo, en lugar de los clientes. Esto ayuda a resolver cualquier problema de consistencia de datos con diferentes zonas horarias del cliente:

 firestore().doc('users/ABC').update({ createdAt: firestore.FieldValue.serverTimestamp(), });

Lea también:

  • https://medium.com/firebase-developers/the-secrets-of-firestore-fieldvalue-servertimestamp-revealed-29dd7a38a82b
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!