Help

The Community will be temporarily unavailable starting on Friday February 28. We’ll be back as soon as we can! To learn more, check out our Announcements blog post.

How exactly do I send an array that contains records to a table?

881 2
cancel
Showing results for 
Search instead for 
Did you mean: 
princedapace
4 - Data Explorer
4 - Data Explorer

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
}
2 Replies 2

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?