Add option to use Field IDs on Quickbase Node (#1651)

* QuickBase: Use FieldIDs instead of names

* Fix name change

* Delete tmp-209473KO4eyCT5LSi

* Fix name change

* Change default to false
This commit is contained in:
Colton Anglin
2021-04-30 21:48:40 -05:00
committed by GitHub
parent 03639b0e3a
commit 35cae02a36
3 changed files with 74 additions and 77 deletions

View File

@@ -230,8 +230,8 @@ export class QuickBase implements INodeType {
if (operation === 'create') {
const tableId = this.getNodeParameter('tableId', 0) as string;
const { fieldsLabelKey, fieldsIdKey } = await getFieldsObject.call(this, tableId);
const useFieldIDs = this.getNodeParameter('useFieldIDs', 0) as boolean;
const simple = this.getNodeParameter('simple', 0) as boolean;
const data: IDataObject[] = [];
@@ -244,10 +244,16 @@ export class QuickBase implements INodeType {
const columns = this.getNodeParameter('columns', i) as string;
const columnList = columns.split(',').map(column => column.trim());
for (const key of Object.keys(items[i].json)) {
if (fieldsLabelKey.hasOwnProperty(key) && columnList.includes(key)) {
record[fieldsLabelKey[key].toString()] = { value: items[i].json[key] };
if (useFieldIDs) {
for (const key of Object.keys(items[i].json)) {
record[key] = { value: items[i].json[key] };
}
} else {
const { fieldsLabelKey } = await getFieldsObject.call(this, tableId);
for (const key of Object.keys(items[i].json)) {
if (fieldsLabelKey.hasOwnProperty(key) && columnList.includes(key)) {
record[fieldsLabelKey[key].toString()] = { value: items[i].json[key] };
}
}
}
@@ -259,8 +265,9 @@ export class QuickBase implements INodeType {
to: tableId,
};
// If not fields are set return at least the record id
body.fieldsToReturn = [fieldsLabelKey['Record ID#']];
// If no fields are set return at least the record id
// 3 == Default Quickbase RecordID #
body.fieldsToReturn = [3];
if (options.fields) {
body.fieldsToReturn = options.fields as string[];
@@ -275,7 +282,7 @@ export class QuickBase implements INodeType {
for (const record of records) {
const data: IDataObject = {};
for (const [key, value] of Object.entries(record)) {
data[fieldsIdKey[key]] = (value as IDataObject).value;
data[key] = (value as IDataObject).value;
}
responseData.push(data);
}
@@ -365,6 +372,8 @@ export class QuickBase implements INodeType {
const { fieldsLabelKey, fieldsIdKey } = await getFieldsObject.call(this, tableId);
const useFieldIDs = this.getNodeParameter('useFieldIDs', 0) as boolean;
const simple = this.getNodeParameter('simple', 0) as boolean;
const updateKey = this.getNodeParameter('updateKey', 0) as string;
@@ -380,9 +389,16 @@ export class QuickBase implements INodeType {
const columnList = columns.split(',').map(column => column.trim());
for (const key of Object.keys(items[i].json)) {
if (fieldsLabelKey.hasOwnProperty(key) && columnList.includes(key)) {
record[fieldsLabelKey[key].toString()] = { value: items[i].json[key] };
if (useFieldIDs) {
for (const key of Object.keys(items[i].json)) {
record[key] = { value: items[i].json[key] };
}
} else {
const { fieldsLabelKey } = await getFieldsObject.call(this, tableId);
for (const key of Object.keys(items[i].json)) {
if (fieldsLabelKey.hasOwnProperty(key) && columnList.includes(key)) {
record[fieldsLabelKey[key].toString()] = { value: items[i].json[key] };
}
}
}
@@ -390,8 +406,6 @@ export class QuickBase implements INodeType {
throw new NodeOperationError(this.getNode(), `The update key ${updateKey} could not be found in the input`);
}
record[fieldsLabelKey['Record ID#']] = { value: items[i].json[updateKey] };
data.push(record);
}
@@ -400,8 +414,9 @@ export class QuickBase implements INodeType {
to: tableId,
};
// If not fields are set return at least the record id
body.fieldsToReturn = [fieldsLabelKey['Record ID#']];
// If no fields are set return at least the record id
// 3 == Default Quickbase RecordID #
//body.fieldsToReturn = [fieldsLabelKey['Record ID#']];
if (options.fields) {
body.fieldsToReturn = options.fields as string[];
@@ -432,7 +447,8 @@ export class QuickBase implements INodeType {
if (operation === 'upsert') {
const tableId = this.getNodeParameter('tableId', 0) as string;
const { fieldsLabelKey, fieldsIdKey } = await getFieldsObject.call(this, tableId);
const useFieldIDs = this.getNodeParameter('useFieldIDs', 0) as boolean;
const simple = this.getNodeParameter('simple', 0) as boolean;
@@ -451,9 +467,16 @@ export class QuickBase implements INodeType {
const columnList = columns.split(',').map(column => column.trim());
for (const key of Object.keys(items[i].json)) {
if (fieldsLabelKey.hasOwnProperty(key) && columnList.includes(key)) {
record[fieldsLabelKey[key].toString()] = { value: items[i].json[key] };
if (useFieldIDs) {
for (const key of Object.keys(items[i].json)) {
record[key] = { value: items[i].json[key] };
}
} else {
const { fieldsLabelKey } = await getFieldsObject.call(this, tableId);
for (const key of Object.keys(items[i].json)) {
if (fieldsLabelKey.hasOwnProperty(key) && columnList.includes(key)) {
record[fieldsLabelKey[key].toString()] = { value: items[i].json[key] };
}
}
}
@@ -472,8 +495,9 @@ export class QuickBase implements INodeType {
mergeFieldId,
};
// If not fields are set return at least the record id
body.fieldsToReturn = [fieldsLabelKey['Record ID#']];
// If no fields are set return at least the record id
// 3 == Default Quickbase RecordID #
body.fieldsToReturn = [3];
if (options.fields) {
body.fieldsToReturn = options.fields as string[];
@@ -488,7 +512,7 @@ export class QuickBase implements INodeType {
for (const record of records) {
const data: IDataObject = {};
for (const [key, value] of Object.entries(record)) {
data[fieldsIdKey[key]] = (value as IDataObject).value;
data[key] = (value as IDataObject).value;
}
responseData.push(data);
}