Estoy guardando la marca de tiempo del servidor Firebase usando serverTimestamp() en la versión 9. Y luego necesito hacer algunos cálculos, por ejemplo, agregar 3000ms. Sin embargo, parece que serverTimestamp() vuelve a generar un objeto y, por lo tanto, simplemente agregar 3000 es imposible. Hasta ahora me he ocupado de esto guardando la marca de tiempo en mi base de datos y luego leyéndola. De esta manera funciona, pero implica una operación adicional de lectura y escritura en la base de datos solo para obtener este valor en JS.
¿Hay alguna manera de transformar el objeto serverTimestamp en un número directamente en JS sin involucrar la escritura y lectura de la base de datos?
el código no funciona (no se puede sumar 3000 a un objeto):
var NewserverTime = serverTimestamp() + 3000;El código funciona, pero el paso adicional de leer y escribir en la base de datos no parece muy elegante ...
set(ref(db, "/dabasepath"), { ServerTime: serverTimestamp() }); const firebaseRef = ref(db, "/databasepath"); onValue(firebaseRef, (snapshot) => { NewServerTime = snapshot.val() + 3000; });No hay forma de almacenar y transformar una marca de tiempo del lado del servidor con una sola operación de escritura. Para determinar la marca de tiempo del lado del servidor, siempre tendrá que escribirla y luego leerla.
Mi enfoque común es almacenar la marca de tiempo y el desplazamiento como campos separados, y luego verificar ambos campos en la consulta, o tener un campo calculado de "marca de tiempo más desplazamiento" que se actualiza automáticamente desde Cloud Functions (lo que provoca solo una escritura adicional).