Soy nuevo en firebase y firestore, creando una aplicación de una sola página, me preguntaba cómo puedo almacenar el tiempo de creación del documento con el documento, que representa el tiempo del lado del servidor. Cuando cambié la hora de mi sistema a una hora incorrecta y luego ejecuté el código a continuación, estaba almacenando la misma marca de tiempo (incorrecta) para los campos clientDate y serverTimestamp .
Intenté lo siguiente (Firebase JavaScript SDK versión 9.0.2):
import { addDoc, collection, Timestamp } from 'firebase/firestore'; import { db } from '../index'; export const storeSomething = async () => { const data = { clientDate: new Date(), serverTimestamp: Timestamp.now(), }; const someCol = collection(db, 'somecollection'); const docRef = await addDoc(someCol, data); };La función Timestamp.now() devuelve la hora actual del lado del cliente, por lo que es sensible al sesgo y la manipulación del reloj.
Para escribir una marca de tiempo del lado del servidor , use:
en v9/sintaxis modular: serverTimestamp()
en v8/sintaxis de compatibilidad: firebase.firestore.FieldValue.serverTimestamp()
en el SDK de administrador: admin.firestore.FieldValue.serverTimestamp()