diff --git a/packages/node_modules/@node-red/runtime/lib/flows/Flow.js b/packages/node_modules/@node-red/runtime/lib/flows/Flow.js index c4f4e39a2..0b6045326 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/Flow.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/Flow.js @@ -719,6 +719,14 @@ class Flow { }); } + getContext(scope) { + if (scope === 'flow') { + return this.context + } else if (scope === 'global') { + return context.get('global') + } + } + dump() { console.log("==================") console.log(this.TYPE, this.id); diff --git a/packages/node_modules/@node-red/runtime/lib/flows/Group.js b/packages/node_modules/@node-red/runtime/lib/flows/Group.js index 589cdf115..d95b4e553 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/Group.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/Group.js @@ -49,6 +49,14 @@ class Group { } return this.parent.getSetting(key); } + + error(msg) { + this.parent.error(msg); + } + + getContext(scope) { + return this.parent.getContext(scope); + } } module.exports = { diff --git a/packages/node_modules/@node-red/runtime/lib/flows/util.js b/packages/node_modules/@node-red/runtime/lib/flows/util.js index 6b7f659b9..d50825212 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/util.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/util.js @@ -100,7 +100,24 @@ async function evaluateEnvProperties(flow, env, credentials) { } } else if (type ==='jsonata') { pendingEvaluations.push(new Promise((resolve, _) => { - redUtil.evaluateNodeProperty(value, 'jsonata', {_flow: flow}, null, (err, result) => { + redUtil.evaluateNodeProperty(value, 'jsonata',{ + // Fake a node object to provide access to _flow and context + _flow: flow, + context: () => { + return { + flow: { + get: (value, store, callback) => { + return flow.getContext('flow').get(value, store, callback) + } + }, + global: { + get: (value, store, callback) => { + return flow.getContext('global').get(value, store, callback) + } + } + } + } + }, null, (err, result) => { if (!err) { if (typeof result === 'object') { result = { value: result, __clone__: true}