From 7346da0b34b5fdf7ab630ccc5cda102cf80c8036 Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Mon, 13 Jun 2022 23:25:09 +0300 Subject: [PATCH] fix(HTTP Request Node): Fix issue with requests that return null (#3498) * :zap: fix * :zap: Remove null values at node level * :fire: Remove unused imports * :zap: Small change Co-authored-by: ricardo --- .../nodes-base/nodes/HttpRequest/GenericFunctions.ts | 8 ++++++++ .../nodes-base/nodes/HttpRequest/HttpRequest.node.ts | 11 +++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts diff --git a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts new file mode 100644 index 0000000000000..59a64d413cd07 --- /dev/null +++ b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts @@ -0,0 +1,8 @@ +import { INodeExecutionData } from "n8n-workflow"; + +export const replaceNullValues = (item: INodeExecutionData) => { + if (item.json === null) { + item.json = {}; + } + return item; +}; diff --git a/packages/nodes-base/nodes/HttpRequest/HttpRequest.node.ts b/packages/nodes-base/nodes/HttpRequest/HttpRequest.node.ts index 48bdc02ac92dd..46a9c3503ea2b 100644 --- a/packages/nodes-base/nodes/HttpRequest/HttpRequest.node.ts +++ b/packages/nodes-base/nodes/HttpRequest/HttpRequest.node.ts @@ -1,14 +1,10 @@ -import path from 'path'; import { IExecuteFunctions, } from 'n8n-core'; import { - IAuthenticate, IBinaryData, IDataObject, - ILoadOptionsFunctions, INodeExecutionData, - INodePropertyOptions, INodeType, INodeTypeDescription, NodeApiError, @@ -16,6 +12,7 @@ import { } from 'n8n-workflow'; import { OptionsWithUri } from 'request'; +import { replaceNullValues } from './GenericFunctions'; interface OptionData { name: string; @@ -919,8 +916,7 @@ export class HttpRequest implements INodeType { displayName: 'Query Paramters', }, }; - - const returnItems: INodeExecutionData[] = []; + let returnItems: INodeExecutionData[] = []; const requestPromises = []; for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { const requestMethod = this.getNodeParameter('requestMethod', itemIndex) as string; @@ -1263,6 +1259,7 @@ export class HttpRequest implements INodeType { // 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. + // @ts-ignore Object.assign(newItem.binary, items[itemIndex].binary); } @@ -1367,6 +1364,8 @@ export class HttpRequest implements INodeType { } } + returnItems = returnItems.map(replaceNullValues); + return this.prepareOutputData(returnItems); } }