🐛 Fix bug when updating and deleting records (#1532)

This commit is contained in:
Ricardo Espinoza 2021-03-12 04:23:35 -05:00 committed by GitHub
parent 71e21c2dae
commit 148a94a8bb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 13 deletions

View file

@ -137,7 +137,7 @@ export class Airtable implements INodeType {
// delete // delete
// ---------------------------------- // ----------------------------------
{ {
displayName: 'Id', displayName: 'ID',
name: 'id', name: 'id',
type: 'string', type: 'string',
displayOptions: { displayOptions: {
@ -317,7 +317,7 @@ export class Airtable implements INodeType {
// read // read
// ---------------------------------- // ----------------------------------
{ {
displayName: 'Id', displayName: 'ID',
name: 'id', name: 'id',
type: 'string', type: 'string',
displayOptions: { displayOptions: {
@ -336,7 +336,7 @@ export class Airtable implements INodeType {
// update // update
// ---------------------------------- // ----------------------------------
{ {
displayName: 'Id', displayName: 'ID',
name: 'id', name: 'id',
type: 'string', type: 'string',
displayOptions: { displayOptions: {
@ -499,7 +499,7 @@ export class Airtable implements INodeType {
for (let i = 0; i < items.length; i++) { for (let i = 0; i < items.length; i++) {
id = this.getNodeParameter('id', i) as string; id = this.getNodeParameter('id', i) as string;
endpoint = `${application}/${table}/${id}`; endpoint = `${application}/${table}`;
// Make one request after another. This is slower but makes // Make one request after another. This is slower but makes
// sure that we do not run into the rate limit they have in // sure that we do not run into the rate limit they have in
@ -507,9 +507,11 @@ export class Airtable implements INodeType {
// functionality in core should make it easy to make requests // functionality in core should make it easy to make requests
// according to specific rules like not more than 5 requests // according to specific rules like not more than 5 requests
// per seconds. // per seconds.
qs.records = [id];
responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs);
returnData.push(responseData); returnData.push(...responseData.records);
} }
} else if (operation === 'list') { } else if (operation === 'list') {
@ -586,7 +588,6 @@ export class Airtable implements INodeType {
let updateAllFields: boolean; let updateAllFields: boolean;
let fields: string[]; let fields: string[];
let options: IDataObject; let options: IDataObject;
for (let i = 0; i < items.length; i++) { for (let i = 0; i < items.length; i++) {
updateAllFields = this.getNodeParameter('updateAllFields', i) as boolean; updateAllFields = this.getNodeParameter('updateAllFields', i) as boolean;
options = this.getNodeParameter('options', i, {}) as IDataObject; options = this.getNodeParameter('options', i, {}) as IDataObject;
@ -616,13 +617,9 @@ export class Airtable implements INodeType {
} }
} }
if (options.typecast === true) {
body['typecast'] = true;
}
id = this.getNodeParameter('id', i) as string; id = this.getNodeParameter('id', i) as string;
endpoint = `${application}/${table}/${id}`; endpoint = `${application}/${table}`;
// Make one request after another. This is slower but makes // Make one request after another. This is slower but makes
// sure that we do not run into the rate limit they have in // sure that we do not run into the rate limit they have in
@ -631,9 +628,11 @@ export class Airtable implements INodeType {
// according to specific rules like not more than 5 requests // according to specific rules like not more than 5 requests
// per seconds. // per seconds.
responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); const data = { records: [{ id, fields: body.fields }], typecast: (options.typecast) ? true : false };
returnData.push(responseData); responseData = await apiRequest.call(this, requestMethod, endpoint, data, qs);
returnData.push(...responseData.records);
} }
} else { } else {

View file

@ -58,6 +58,7 @@ export async function apiRequest(this: IHookFunctions | IExecuteFunctions | ILoa
body, body,
qs: query, qs: query,
uri: uri || `https://api.airtable.com/v0/${endpoint}`, uri: uri || `https://api.airtable.com/v0/${endpoint}`,
useQuerystring: false,
json: true, json: true,
}; };