From 3c8946ba7dd30507786bd23b6064cc50c0b5a593 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Wed, 9 Oct 2019 21:52:45 +0200 Subject: [PATCH] :zap: Add support for dot-notation in mode "mergeByKey" for Merge-Node --- packages/nodes-base/nodes/Merge.node.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/nodes-base/nodes/Merge.node.ts b/packages/nodes-base/nodes/Merge.node.ts index 3e67902cf0..a1279cbc65 100644 --- a/packages/nodes-base/nodes/Merge.node.ts +++ b/packages/nodes-base/nodes/Merge.node.ts @@ -1,3 +1,5 @@ +import { get } from 'lodash'; + import { IExecuteFunctions } from 'n8n-core'; import { GenericValue, @@ -148,8 +150,6 @@ export class Merge implements INodeType { async execute(this: IExecuteFunctions): Promise { - // const itemsInput2 = this.getInputData(1); - const returnData: INodeExecutionData[] = []; const mode = this.getNodeParameter('mode', 0) as string; @@ -264,25 +264,26 @@ export class Merge implements INodeType { } = {}; let entry: INodeExecutionData; for (entry of dataInput2) { - if (!entry.json || !entry.json.hasOwnProperty(propertyName2)) { + const key = get(entry.json, propertyName2); + if (!entry.json || !key) { // Entry does not have the property so skip it continue; } - copyData[entry.json[propertyName2] as string] = entry; + copyData[key as string] = entry; } // Copy data on entries let referenceValue: GenericValue; let key: string; for (entry of dataInput1) { + referenceValue = get(entry.json, propertyName1); - if (!entry.json || !entry.json.hasOwnProperty(propertyName1)) { + if (!referenceValue) { // Entry does not have the property so skip it continue; } - referenceValue = entry.json[propertyName1]; if (!['string', 'number'].includes(typeof referenceValue)) { continue;