mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-12 16:10:30 +02:00
fix(core): Skip unknown fixedCollection keys instead of throwing (#29689)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
86170674b7
commit
a30772c933
|
|
@ -929,20 +929,19 @@ export function getNodeParameters(
|
||||||
if (typeof propertyValues !== 'object' || Array.isArray(propertyValues)) {
|
if (typeof propertyValues !== 'object' || Array.isArray(propertyValues)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Iterate over all items as it contains multiple ones
|
|
||||||
for (const nodeValue of (propertyValues as INodeParameters)[
|
|
||||||
itemName
|
|
||||||
] as INodeParameters[]) {
|
|
||||||
nodePropertyOptions = nodeProperties.options!.find(
|
nodePropertyOptions = nodeProperties.options!.find(
|
||||||
(nodePropertyOptions) => nodePropertyOptions.name === itemName,
|
(nodePropertyOptions) => nodePropertyOptions.name === itemName,
|
||||||
) as INodePropertyCollection;
|
) as INodePropertyCollection;
|
||||||
|
|
||||||
if (nodePropertyOptions === undefined) {
|
if (nodePropertyOptions === undefined) {
|
||||||
throw new ApplicationError('Could not find property option', {
|
continue;
|
||||||
extra: { propertyOption: itemName, property: nodeProperties.name },
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Iterate over all items as it contains multiple ones
|
||||||
|
for (const nodeValue of (propertyValues as INodeParameters)[
|
||||||
|
itemName
|
||||||
|
] as INodeParameters[]) {
|
||||||
tempNodePropertiesArray = nodePropertyOptions.values!;
|
tempNodePropertiesArray = nodePropertyOptions.values!;
|
||||||
tempValue = getNodeParameters(
|
tempValue = getNodeParameters(
|
||||||
tempNodePropertiesArray,
|
tempNodePropertiesArray,
|
||||||
|
|
|
||||||
|
|
@ -3615,6 +3615,69 @@ describe('NodeHelpers', () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
description:
|
||||||
|
'complex type "fixedCollection" with "multipleValues: true". Skip unknown item names instead of throwing',
|
||||||
|
input: {
|
||||||
|
nodePropertiesArray: [
|
||||||
|
{
|
||||||
|
displayName: 'Values',
|
||||||
|
name: 'values',
|
||||||
|
type: 'fixedCollection',
|
||||||
|
typeOptions: {
|
||||||
|
multipleValues: true,
|
||||||
|
},
|
||||||
|
default: {},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'number1',
|
||||||
|
displayName: 'Number 1',
|
||||||
|
values: [
|
||||||
|
{
|
||||||
|
displayName: 'Number',
|
||||||
|
name: 'number',
|
||||||
|
type: 'number',
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
nodeValues: {
|
||||||
|
values: {
|
||||||
|
number1: [{ number: 42 }],
|
||||||
|
and: [{ property: 'Status', filter: 'active' }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
noneDisplayedFalse: {
|
||||||
|
defaultsFalse: {
|
||||||
|
values: {
|
||||||
|
number1: [{ number: 42 }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
defaultsTrue: {
|
||||||
|
values: {
|
||||||
|
number1: [{ number: 42 }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
noneDisplayedTrue: {
|
||||||
|
defaultsFalse: {
|
||||||
|
values: {
|
||||||
|
number1: [{ number: 42 }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
defaultsTrue: {
|
||||||
|
values: {
|
||||||
|
number1: [{ number: 42 }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const testData of tests) {
|
for (const testData of tests) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user