From 70822ce988543476719089c132e1d10af0d03e78 Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:21:42 +0300 Subject: [PATCH] fix(Merge Node): Enrich input 2 fix (#6526) --- .../node/workflow.combine.mergeByFields.json | 8 ++--- .../nodes/Merge/v2/GenericFunctions.ts | 30 +++++++------------ .../nodes-base/nodes/Merge/v2/MergeV2.node.ts | 18 ++++++----- 3 files changed, 26 insertions(+), 30 deletions(-) diff --git a/packages/nodes-base/nodes/Merge/test/node/workflow.combine.mergeByFields.json b/packages/nodes-base/nodes/Merge/test/node/workflow.combine.mergeByFields.json index aecdcd2712..f31d72e8f0 100644 --- a/packages/nodes-base/nodes/Merge/test/node/workflow.combine.mergeByFields.json +++ b/packages/nodes-base/nodes/Merge/test/node/workflow.combine.mergeByFields.json @@ -278,8 +278,8 @@ { "json": { "id": 1, - "data": "c", - "input": 2, + "data": "a", + "input": 1, "text": "foo", "tag": "second" } @@ -287,8 +287,8 @@ { "json": { "id": 2, - "data": "d", - "input": 2, + "data": "b", + "input": 1, "text": "foo", "tag": "second" } diff --git a/packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts b/packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts index 19f2f8bffb..a74ec6e44f 100644 --- a/packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Merge/v2/GenericFunctions.ts @@ -132,12 +132,8 @@ export function findMatches( fieldsToMatch: PairToMatch[], options: MatchFieldsOptions, ) { - let data1 = [...input1]; - let data2 = [...input2]; - - if (options.joinMode === 'enrichInput2') { - [data1, data2] = [data2, data1]; - } + const data1 = [...input1]; + const data2 = [...input2]; const isEntriesEqual = fuzzyCompare(options.fuzzyCompare as boolean); const disableDotNotation = options.disableDotNotation || false; @@ -263,12 +259,8 @@ export function mergeMatched( let binary: IBinaryKeyData = {}; if (resolveClash === 'addSuffix') { - let suffix1 = '1'; - let suffix2 = '2'; - - if (joinMode === 'enrichInput2') { - [suffix1, suffix2] = [suffix2, suffix1]; - } + const suffix1 = '1'; + const suffix2 = '2'; [entry] = addSuffixToEntriesKeys([entry], suffix1); matches = addSuffixToEntriesKeys(matches, suffix2); @@ -279,15 +271,15 @@ export function mergeMatched( ...matches.map((item) => item.binary as IDataObject), ); } else { - let preferInput1 = 'preferInput1'; - let preferInput2 = 'preferInput2'; - - if (joinMode === 'enrichInput2') { - [preferInput1, preferInput2] = [preferInput2, preferInput1]; - } + const preferInput1 = 'preferInput1'; + const preferInput2 = 'preferInput2'; if (resolveClash === undefined) { - resolveClash = 'preferInput2'; + if (joinMode !== 'enrichInput2') { + resolveClash = 'preferInput2'; + } else { + resolveClash = 'preferInput1'; + } } if (resolveClash === preferInput1) { diff --git a/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts b/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts index 5cf6ab28e4..e1a26ea928 100644 --- a/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts +++ b/packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts @@ -571,14 +571,18 @@ export class MergeV2 implements INodeType { const mergedEntries = mergeMatched(matches.matched, clashResolveOptions, joinMode); - if (clashResolveOptions.resolveClash === 'addSuffix') { - const suffix = joinMode === 'enrichInput1' ? '1' : '2'; - returnData.push( - ...mergedEntries, - ...addSuffixToEntriesKeys(matches.unmatched1, suffix), - ); + if (joinMode === 'enrichInput1') { + if (clashResolveOptions.resolveClash === 'addSuffix') { + returnData.push(...mergedEntries, ...addSuffixToEntriesKeys(matches.unmatched1, '1')); + } else { + returnData.push(...mergedEntries, ...matches.unmatched1); + } } else { - returnData.push(...mergedEntries, ...matches.unmatched1); + if (clashResolveOptions.resolveClash === 'addSuffix') { + returnData.push(...mergedEntries, ...addSuffixToEntriesKeys(matches.unmatched2, '2')); + } else { + returnData.push(...mergedEntries, ...matches.unmatched2); + } } } }