Feb 15, 2022 05:32 AM
I’m trying get all of the records form an api call into an object so I can use the data in other calculations. I can’t, however, get the function to return what I want. I’ve tried lots of combinations of async/await and .then(), but I can’t get it to work. “aTotalRecords” gets filled up with the data, but I can’t get the function to return it.
Can someone help me figure this out? Thanks in advance.
Here’s the code I have:
async function getAirtableData(){
// var Airtable = require('airtable');
var base = new Airtable({apiKey: oConfig.oConfig.airtableAPIKey}).base(oConfig.oConfig.airtableBaseKey);
var aTotalRecords = []; // for keeping allthe records
base('Polygon Transactions').select({
maxRecords: 500
// view: "Grid view"
}).eachPage(function page(records, fetchNextPage) {
// This function (`page`) will get called for each page of records.
records.forEach(function(record) {
aTotalRecords.push(record.get('tx_hash'));
// console.log("length is: " + aTotalRecords.length);
// console.log(record.get('tx_hash'));
});
// To fetch the next page of records, call `fetchNextPage`.
// If there are more records, `page` will get called again.
// If there are no more records, `done` will get called.
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
});
// return Promise
// console.log(aTotalRecords)
// return await Promise.resolve(aTotalRecords)
return aTotalRecords
};
// getAirtableData().then(console.log);
async function allAirtableRecords() {
return getAirtableData();
};
allAirtableRecords().then(console.log);
Solved! Go to Solution.
Feb 15, 2022 06:49 AM
Hey @David_Weinstein - have you tried the following?
var base = new Airtable({apiKey: oConfig.oConfig.airtableAPIKey}).base(oConfig.oConfig.airtableBaseKey);
var allRecords = await base('Polygon Transactions').select({ maxRecords: 500 }).all()
It looks like this was added in v0.5.0 and the changelog has another example here
This should work for you and be much simpler too.
Feb 15, 2022 06:49 AM
Hey @David_Weinstein - have you tried the following?
var base = new Airtable({apiKey: oConfig.oConfig.airtableAPIKey}).base(oConfig.oConfig.airtableBaseKey);
var allRecords = await base('Polygon Transactions').select({ maxRecords: 500 }).all()
It looks like this was added in v0.5.0 and the changelog has another example here
This should work for you and be much simpler too.