From 735a7e681247db358da5a06a3aca246a15ceedb0 Mon Sep 17 00:00:00 2001 From: dali Date: Tue, 16 Feb 2021 10:42:46 +0100 Subject: [PATCH] Remove executeSingle from WriteBinaryFile node --- .../nodes-base/nodes/WriteBinaryFile.node.ts | 79 +++++++++++-------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/packages/nodes-base/nodes/WriteBinaryFile.node.ts b/packages/nodes-base/nodes/WriteBinaryFile.node.ts index eb56a006fd..f329f47093 100644 --- a/packages/nodes-base/nodes/WriteBinaryFile.node.ts +++ b/packages/nodes-base/nodes/WriteBinaryFile.node.ts @@ -1,6 +1,7 @@ import { BINARY_ENCODING, - IExecuteSingleFunctions, + IExecuteFunctions, + IExecuteSingleFunctions } from 'n8n-core'; import { IDataObject, @@ -53,39 +54,53 @@ export class WriteBinaryFile implements INodeType { }; - async executeSingle(this: IExecuteSingleFunctions): Promise { - const item = this.getInputData(); + async execute(this: IExecuteFunctions): Promise { + + const items = this.getInputData(); - const dataPropertyName = this.getNodeParameter('dataPropertyName') as string; - const fileName = this.getNodeParameter('fileName') as string; + const returnData: INodeExecutionData[] = []; + const length = items.length as unknown as number; + let item: INodeExecutionData; - if (item.binary === undefined) { - throw new Error('No binary data set. So file can not be written!'); + for (let itemIndex = 0; itemIndex < length; itemIndex++) { + + const dataPropertyName = this.getNodeParameter('dataPropertyName', itemIndex) as string; + + const fileName = this.getNodeParameter('fileName', itemIndex) as string; + + item = items[itemIndex]; + + if (item.binary === undefined) { + throw new Error('No binary data set. So file can not be written!'); + } + + if (item.binary[dataPropertyName] === undefined) { + throw new Error(`The binary property "${dataPropertyName}" does not exist. So no file can be written!`); + } + + // Write the file to disk + await fsWriteFileAsync(fileName, Buffer.from(item.binary[dataPropertyName].data, BINARY_ENCODING), 'binary'); + + const newItem: INodeExecutionData = { + json: {}, + }; + Object.assign(newItem.json, item.json); + + if (item.binary !== undefined) { + // Create a shallow copy of the binary data so that the old + // data references which do not get changed still stay behind + // but the incoming data does not get changed. + newItem.binary = {}; + Object.assign(newItem.binary, item.binary); + } + + // Add the file name to data + + (newItem.json as IDataObject).fileName = fileName; + + returnData.push(newItem); } - - if (item.binary[dataPropertyName] === undefined) { - throw new Error(`The binary property "${dataPropertyName}" does not exist. So no file can be written!`); - } - - // Write the file to disk - await fsWriteFileAsync(fileName, Buffer.from(item.binary[dataPropertyName].data, BINARY_ENCODING), 'binary'); - - const newItem: INodeExecutionData = { - json: {}, - }; - Object.assign(newItem.json, item.json); - - if (item.binary !== undefined) { - // Create a shallow copy of the binary data so that the old - // data references which do not get changed still stay behind - // but the incoming data does not get changed. - newItem.binary = {}; - Object.assign(newItem.binary, item.binary); - } - - // Add the file name to data - (newItem.json as IDataObject).fileName = fileName; - - return newItem; + return this.prepareOutputData(returnData); } + }