Skip to main content

I am using the Airtable js package for nodejs and it is my first time. I have dynamic data that I would like to store in a table. Is there a way to send the request once by passing an array into the create method? I don't want to iterate the array and call the create method on each iteration. I'm sure there is a way to do it once, I must be missing something.

const base = new Airtable({ apiKey: `${process.env.AIRTABLE_ACCESS_TOKEN}`}).base(`${process.env.AIRTABLE_BASEID}`);

const tempOrderParticipantData = [...params?.participantData as participantDataAttributes[]];

const tempRecord: unknown[] = [];



tempOrderParticipantData?.forEach((item, index)=>{

tempRecord?.push({

"Full Name": `${item?.participantNameInfo?.participantFirstName} ${item?.participantNameInfo?.participantLastName}`,

"First Name": `${item?.participantNameInfo?.participantFirstName}`,

"Last Name":`${item?.participantNameInfo?.participantLastName}`,

"Phone": `${item?.participantNameInfo?.participantPhoneNumber}`,

"Email": `${item?.participantNameInfo?.participantEmail}`,

"Tour Name": `${params?.orderDetails?.tripName}`,

"Payment Status": `Successful`

})

});

base(`${process.env.AIRTABLE_TABLEID}`).create(tempRecord as string[]).then(record => {

console.log('Created record');

}).catch(err => {

console.error('Error creating record:', err);

});

I do get this error response:

Error creating record: AirtableError {

error: 'INVALID_REQUEST_MISSING_FIELDS',

message: 'Could not find field "fields" in the request body',

statusCode: 422

}

Hm, `create` takes in an array of up to 10 records so you don't need to call it per record you want to create?

Each record object needs to have a `fields` date type too, so your code would need to be:

tempRecord?.push({

fields:{

"Full Name": `${item?.participantNameInfo?.participantFirstName} ${item?.participantNameInfo?.participantLastName}`,

"First Name": `${item?.participantNameInfo?.participantFirstName}`,

"Last Name":`${item?.participantNameInfo?.participantLastName}`,

"Phone": `${item?.participantNameInfo?.participantPhoneNumber}`,

"Email": `${item?.participantNameInfo?.participantEmail}`,

"Tour Name": `${params?.orderDetails?.tripName}`,

"Payment Status": `Successful`

}

})




Hm, `create` takes in an array of up to 10 records so you don't need to call it per record you want to create?

Each record object needs to have a `fields` date type too, so your code would need to be:

tempRecord?.push({

fields:{

"Full Name": `${item?.participantNameInfo?.participantFirstName} ${item?.participantNameInfo?.participantLastName}`,

"First Name": `${item?.participantNameInfo?.participantFirstName}`,

"Last Name":`${item?.participantNameInfo?.participantLastName}`,

"Phone": `${item?.participantNameInfo?.participantPhoneNumber}`,

"Email": `${item?.participantNameInfo?.participantEmail}`,

"Tour Name": `${params?.orderDetails?.tripName}`,

"Payment Status": `Successful`

}

})




Thank you very much for coming through. Is there a place this was explained in their documentation because I have been there for hours, coupled with limited contents on this app online. 

Secondly, if I have more than 10 records in the array, how do I handle that?


Reply