Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

232
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda