es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Campo de marca de tiempo de lectura de Firestore -> no definido

Intento leer dos campos de un documento de Firestore:

  • El tipo es número { personScoresAllCount : 2 }
    • El tipo es marca de tiempo: { personScoresCalculationDate : 30/12/2021 12:00:00 AM }

enter image description here

Estos dos campos se abordan con estas 2 líneas de código casi idénticas:

console.log("querySnapshotPersonsDocs[i].data().personScoresCalculationDate : "+JSON.stringify(querySnapshotPersonsDocs[i].data().personScoresCalculationDate ));
console.log("querySnapshotPersonsDocs[i].data().personScoresAllCount: "+JSON.stringify(querySnapshotPersonsDocs[i].data().personScoresAllCount));

Captura de pantalla de la consola:
Mientras que la segunda línea devuelve el valor esperado, la primera línea devuelve solo ‘undefined’.
enter image description here

¿Qué me falta para abordar el campo de marca de tiempo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la forma en que se recupera el campo de marca de tiempo. Cuando se recupera un campo de marca de tiempo de Firestore, devuelve un objeto de tipo Timestamp que debe convertirse a un objeto de fecha de JavaScript antes de poder usarse como una cadena.

    Para solucionar este problema, puedes modificar la primera línea de código para convertir el objeto Timestamp a un objeto Date antes de llamar a JSON.stringify(). Aquí tienes un ejemplo:

    console.log("querySnapshotPersonsDocs[i].data().personScoresCalculationDate : " + new Date(querySnapshotPersonsDocs[i].data().personScoresCalculationDate.seconds * 1000).toJSON());

    Este código recupera el objeto Timestamp utilizando querySnapshotPersonsDocs[i].data().personScoresCalculationDate, extrae el valor del campo seconds y lo utiliza para crear un nuevo objeto Date (usando new Date(seconds * 1000)), que luego se convierte a JSON utilizando el método toJSON().

    Con esta modificación, la consola debería mostrar correctamente el valor de la marca de tiempo.

    querySnapshotPersonsDocs[i].data().personScoresCalculationDate : "2021-12-30T00:00:00.000Z

Comments are closed.