Creé un script destinado a leer datos de una hoja de Google, la función getData() devuelve una promesa de una matriz. Sin embargo, cuando accedo a los datos posteriormente, el valor de los datos es una promesa de una función. ¿Por qué es este el caso?
import dotenv from "dotenv"; import { google } from "googleapis"; import { mainModule } from "process"; dotenv.config(); const spreadsheetID = process.env.spreadsheetID; if (process.env.NODE_ENV == "production") { var fs = require("fs"); fs.writeFile("./secrets.json", process.env.SECRET, (err: any) => { err; }); } async function getData() { const auth = new google.auth.GoogleAuth({ keyFile: "secrets.json", scopes: "https://www.googleapis.com/auth/spreadsheets", }); const client = await auth.getClient(); const googleSheets = google.sheets({ version: "v4", auth: client }); var getRows = await googleSheets.spreadsheets.values.get({ auth: auth, spreadsheetId: spreadsheetID, range: "Sheet1", }); console.log(getRows.data.values); console.log(Array.isArray(getRows.data.values)) return getRows.data.values; } const data = getData(); data.then(() => { console.log(Array.isArray(data); console.log(data); var present_list = (data as any).forEach((user: any) => { if (user[4] == "P") { present_list.append(user); } }); console.log(present_list); }); console.log("asdasd");Si queremos acceder a los datos de una promesa, nos gustaría hacer algo como esto:
//... const data = getData(); data.then((result) => { const present_list = result.forEach((user: any) => { ... }); }); No queremos usar la variable data , porque obviamente eso sería una promesa, incluso dentro de la función de devolución de llamada pasada a then . Nos gustaría usar el parámetro de la devolución de llamada, que tendrá los datos extraídos de la promesa.