mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-21 02:56:40 -08:00
🐛 Fix that "getCurrentNodeParameter" did not resolve expressions
This commit is contained in:
parent
ae89882951
commit
a7d729842a
|
@ -10,6 +10,7 @@ import {
|
|||
INode,
|
||||
INodeCredentials,
|
||||
INodeIssues,
|
||||
INodeParameters,
|
||||
INodePropertyOptions,
|
||||
INodeTypeDescription,
|
||||
IRunExecutionData,
|
||||
|
@ -125,7 +126,7 @@ export interface IRestApi {
|
|||
makeRestApiRequest(method: string, endpoint: string, data?: any): Promise<any>; // tslint:disable-line:no-any
|
||||
getSettings(): Promise<IN8nUISettings>;
|
||||
getNodeTypes(): Promise<INodeTypeDescription[]>;
|
||||
getNodeParameterOptions(nodeType: string, methodName: string, credentials?: INodeCredentials): Promise<INodePropertyOptions[]>;
|
||||
getNodeParameterOptions(nodeType: string, methodName: string, currentNodeParameters: INodeParameters, credentials?: INodeCredentials): Promise<INodePropertyOptions[]>;
|
||||
removeTestWebhook(workflowId: string): Promise<boolean>;
|
||||
runWorkflow(runData: IStartRunData): Promise<IExecutionPushResponse>;
|
||||
createNewWorkflow(sendData: IWorkflowData): Promise<IWorkflowDb>;
|
||||
|
|
|
@ -171,6 +171,7 @@ import { genericHelpers } from '@/components/mixins/genericHelpers';
|
|||
import { restApi } from '@/components/mixins/restApi';
|
||||
import { showMessage } from '@/components/mixins/showMessage';
|
||||
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
|
||||
import { workflowSave } from '@/components/mixins/workflowSave';
|
||||
import { workflowRun } from '@/components/mixins/workflowRun';
|
||||
|
||||
import { saveAs } from 'file-saver';
|
||||
|
@ -183,6 +184,7 @@ export default mixins(
|
|||
showMessage,
|
||||
workflowHelpers,
|
||||
workflowRun,
|
||||
workflowSave,
|
||||
)
|
||||
.extend({
|
||||
name: 'MainHeader',
|
||||
|
|
|
@ -57,6 +57,7 @@ import mixins from 'vue-typed-mixins';
|
|||
|
||||
export default mixins(
|
||||
copyPaste,
|
||||
showMessage,
|
||||
workflowHelpers,
|
||||
)
|
||||
.extend({
|
||||
|
|
|
@ -125,6 +125,7 @@ import {
|
|||
import {
|
||||
NodeHelpers,
|
||||
NodeParameterValue,
|
||||
INodeParameters,
|
||||
INodePropertyOptions,
|
||||
Workflow,
|
||||
} from 'n8n-workflow';
|
||||
|
@ -421,6 +422,21 @@ export default mixins(
|
|||
},
|
||||
},
|
||||
methods: {
|
||||
getResolveNodeParameters (nodeParameters: INodeParameters): INodeParameters {
|
||||
const returnData: INodeParameters = {};
|
||||
for (const key of Object.keys(nodeParameters)) {
|
||||
if (Array.isArray(nodeParameters[key])) {
|
||||
returnData[key] = (nodeParameters[key] as string[]).map(value => {
|
||||
return this.resolveExpression(value as string) as string;
|
||||
});
|
||||
} else if (typeof nodeParameters[key] === 'object') {
|
||||
returnData[key] = this.getResolveNodeParameters(nodeParameters[key] as INodeParameters);
|
||||
} else {
|
||||
returnData[key] = this.resolveExpression(nodeParameters[key] as string);
|
||||
}
|
||||
}
|
||||
return returnData;
|
||||
},
|
||||
async loadRemoteParameterOptions () {
|
||||
if (this.node === null || this.remoteMethod === undefined || this.remoteParameterOptionsLoading) {
|
||||
return;
|
||||
|
@ -429,8 +445,12 @@ export default mixins(
|
|||
this.remoteParameterOptionsLoading = true;
|
||||
this.remoteParameterOptions.length = 0;
|
||||
|
||||
// Get the resolved parameter values of the current node
|
||||
const currentNodeParameters = this.$store.getters.activeNode.parameters;
|
||||
const resolvedNodeParameters = this.getResolveNodeParameters(currentNodeParameters);
|
||||
|
||||
try {
|
||||
const options = await this.restApi().getNodeParameterOptions(this.node.type, this.remoteMethod, this.node.credentials);
|
||||
const options = await this.restApi().getNodeParameterOptions(this.node.type, this.remoteMethod, resolvedNodeParameters, this.node.credentials);
|
||||
this.remoteParameterOptions.push.apply(this.remoteParameterOptions, options);
|
||||
} catch (error) {
|
||||
this.remoteParameterOptionsLoadingIssues = error.message;
|
||||
|
|
|
@ -26,6 +26,7 @@ import {
|
|||
ICredentialType,
|
||||
IDataObject,
|
||||
INodeCredentials,
|
||||
INodeParameters,
|
||||
INodePropertyOptions,
|
||||
INodeTypeDescription,
|
||||
} from 'n8n-workflow';
|
||||
|
@ -152,12 +153,12 @@ export const restApi = Vue.extend({
|
|||
},
|
||||
|
||||
// Returns all the parameter options from the server
|
||||
getNodeParameterOptions: (nodeType: string, methodName: string, credentials?: INodeCredentials): Promise<INodePropertyOptions[]> => {
|
||||
getNodeParameterOptions: (nodeType: string, methodName: string, currentNodeParameters: INodeParameters, credentials?: INodeCredentials): Promise<INodePropertyOptions[]> => {
|
||||
const sendData = {
|
||||
nodeType,
|
||||
methodName,
|
||||
credentials,
|
||||
currentNodeParameters: this.$store.getters.activeNode.parameters,
|
||||
currentNodeParameters,
|
||||
};
|
||||
return self.restApi().makeRestApiRequest('GET', '/node-parameter-options', sendData);
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue