Lo que estoy tratando de hacer: extraer datos de airtable y colocarlos en una matriz para que los elementos dentro de esta matriz puedan asignarse a una tabla html más adelante.
El problema que tengo: Javascript extrae datos de Airtable de forma asíncrona (o así lo entiendo), por lo que no importa si uso una función de espera asíncrona o simplemente una normal, siempre obtengo una promesa. Todo lo que quiero hacer es sacar estos elementos de la mesa y ponerlos en una matriz, pero está demostrando ser más difícil de lo que debería ser. (Todavía es nuevo en javascript, por lo que podría ser que aún no entiendo todo completamente).
Código para extraer los datos:
var Airtable = require('airtable'); var base = new Airtable({apiKey: 'API-KEY'}).base('BASE-ID'); const table = base('BASE-NAME'); let lst = []; const getRecords = async () => { try { const records = await table.select().all(); for(i = 0; i < records.length; i++){ lst.push(records[i]) } } catch (err) { console.error(err); } } Sé que el código anterior funciona porque si cambio la línea en la que envío los lst al lst con una console.log(records[i]) . El problema surge cuando intento ejecutar un console.log(lst) . Simplemente devuelve Promise {pending} .
Entonces, lo que encontré en el documento del desarrollador y aquí en el desbordamiento de la pila es que necesito usar un .then() para devolver el lst , así que probé lo siguiente:
getRecords().then(res => { console.log(lst) } ); que de hecho me dio los resultados deseados que estaba buscando, pero ahora si ejecuto un console.log(lst) obtengo el mismo mensaje de Promise {pending} impreso en la consola.
¿Significa esto que tendré que asignar los elementos dentro de lst a la tabla HTML dentro del
getRecords().then(res => { console.log(lst) // so instead of printing the lst to the console here, would I just map the items to the html table? } );sección del código?