Tengo varias tablas en Google Cloud Spanner con columnas de tipo Fecha . Insertar entradas con fechas específicas no es un problema y se refleja adecuadamente en la base de datos. Sin embargo, recuperar entradas de la base de datos en la interfaz de Javascript es donde radica el problema. Parece que no puedo averiguar en qué formato están estos campos de fecha.
Mi código (Google Cloud Functions) recupera un cliente de la base de datos de la siguiente manera:
async function fetch(database, query) { query.json = true; try { const [rows] = await database.run(query); return rows; } catch (error) { console.error("ERROR:", error); throw error; } finally { database.close(); } } exports.fetchCustomer = functions.https.onCall(async (data, context) => { const database = instance.database(data.dataset); let address = fetch(database, { sql: `SELECT * FROM addresses WHERE addressId = '${data.id}'`, }); let customer = fetch(database, { sql: `SELECT * FROM customers WHERE customerId = '${data.id}'`, }); try { [address, customer] = await Promise.all([address, customer]); return [address[0], customer[0]]; } catch (error) { console.error("ERROR:", error); throw error; } });En el lado frontal, tengo:
const fetchCustomer = httpsCallable(firebaseFunctions, 'fetchCustomer'); await fetchCustomer({dataset: this.dataset, id: this.customerId}) .then((res) => { this.address = res.data[0]; this.customer = res.data[1]; } El objeto this.customer luego tiene una propiedad dateOfBirth que parece ser un objeto infinitamente anidado, que no puedo entender. ¿Cómo puedo convertir esa propiedad en una cadena con el formato 'yyyy-mm-dd' o cualquier otro formato de fecha apropiado?
Cualquier consejo o información sobre el asunto sería apreciada. ¡Gracias por adelantado!
Esta muestra tiene un ejemplo ( https://cloud.google.com/spanner/docs/samples/spanner-query-with-date-parameter#spanner_query_with_date_parameter-nodejs ):
rows.forEach(row => { const date = row[2]['value']; const json = row.toJSON(); console.log( `VenueId: ${json.VenueId}, VenueName: ${json.VenueName},` + ` LastContactDate: ${JSON.stringify(date).substring(1, 11)}` ); });