Remove executeSingle from WriteBinaryFile node

This commit is contained in:
dali 2021-02-16 10:42:46 +01:00
parent b0664d2aa0
commit 735a7e6812

View file

@ -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<INodeExecutionData> {
const item = this.getInputData();
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
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);
}
}