fix(Postgres Node): Arrays in query replacement fix (#6718)

This commit is contained in:
Michael Kret
2023-07-25 15:34:45 +03:00
committed by GitHub
parent ed09e9c695
commit 4cae091cfb
2 changed files with 59 additions and 30 deletions

View File

@@ -61,22 +61,44 @@ export async function execute(
query = query.replace(resolvable, this.evaluateExpression(resolvable, i) as string);
}
let values: IDataObject[] = [];
let values: Array<IDataObject | string> = [];
let queryReplacement = this.getNodeParameter('options.queryReplacement', i, '');
const queryReplacement = this.getNodeParameter('options.queryReplacement', i, '');
if (typeof queryReplacement === 'string') {
queryReplacement = queryReplacement.split(',').map((entry) => entry.trim());
}
const node = this.getNode();
if (Array.isArray(queryReplacement)) {
values = queryReplacement as IDataObject[];
const rawReplacements = (node.parameters.options as IDataObject)?.queryReplacement as string;
if (rawReplacements) {
const rawValues = rawReplacements
.replace(/^=+/, '')
.split(',')
.filter((entry) => entry)
.map((entry) => entry.trim());
for (const rawValue of rawValues) {
const resolvables = getResolvables(rawValue);
if (resolvables.length) {
for (const resolvable of resolvables) {
values.push(this.evaluateExpression(`${resolvable}`, i) as IDataObject);
}
} else {
values.push(rawValue);
}
}
}
} else {
throw new NodeOperationError(
this.getNode(),
'Query Replacement must be a string of comma-separated values, or an array of values',
{ itemIndex: i },
);
if (Array.isArray(queryReplacement)) {
values = queryReplacement as IDataObject[];
} else {
throw new NodeOperationError(
this.getNode(),
'Query Parameters must be a string of comma-separated values or an array of values',
{ itemIndex: i },
);
}
}
queries.push({ query, values });