diff --git a/packages/workflow/src/WorkflowDataProxy.ts b/packages/workflow/src/WorkflowDataProxy.ts index a6b19310e9..9cf29807ae 100644 --- a/packages/workflow/src/WorkflowDataProxy.ts +++ b/packages/workflow/src/WorkflowDataProxy.ts @@ -922,10 +922,6 @@ export class WorkflowDataProxy { throw createExpressionError(`"${nodeName}" node doesn't exist`); } - if (!that?.runExecutionData?.resultData?.runData.hasOwnProperty(nodeName)) { - throw createExpressionError(`no data, execute "${nodeName}" node first`); - } - return new Proxy( {}, { @@ -933,6 +929,7 @@ export class WorkflowDataProxy { ownKeys() { return [ 'pairedItem', + 'isExecuted', 'itemMatching', 'item', 'first', @@ -945,6 +942,12 @@ export class WorkflowDataProxy { get(target, property, receiver) { if (property === 'isProxy') return true; + if (!that?.runExecutionData?.resultData?.runData.hasOwnProperty(nodeName)) { + if (property === 'isExecuted') return false; + throw createExpressionError(`no data, execute "${nodeName}" node first`); + } + if (property === 'isExecuted') return true; + if (['pairedItem', 'itemMatching', 'item'].includes(property as string)) { const pairedItemMethod = (itemIndex?: number) => { if (itemIndex === undefined) { diff --git a/packages/workflow/test/WorkflowDataProxy.test.ts b/packages/workflow/test/WorkflowDataProxy.test.ts index b681a80b06..30afbaa923 100644 --- a/packages/workflow/test/WorkflowDataProxy.test.ts +++ b/packages/workflow/test/WorkflowDataProxy.test.ts @@ -294,8 +294,9 @@ describe('WorkflowDataProxy', () => { expect(() => proxy.$('doNotExist')).toThrowError(ExpressionError); }); - test('$("NodeName")', () => { - expect(() => proxy.$('Set')).toThrowError(ExpressionError); + test('test $("NodeName").isExecuted', () => { + expect(proxy.$('Function').isExecuted).toEqual(true); + expect(proxy.$('Set').isExecuted).toEqual(false); }); test('test $input.all()', () => {