diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/form.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/form.ts index 79efd2671..ea9dbcd06 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/form.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/form.ts @@ -33,7 +33,14 @@ export default class FormTrigger extends Trigger { middleware = async (context, next) => { await next(); - const { resourceName, actionName } = context.action; + const { + resourceName, + actionName, + params: { triggerWorkflows }, + } = context.action; + if (!triggerWorkflows) { + return; + } if ((resourceName === 'workflows' && actionName === 'trigger') || !['create', 'update'].includes(actionName)) { return; @@ -42,11 +49,8 @@ export default class FormTrigger extends Trigger { this.trigger(context); }; - async trigger(context) { - const { triggerWorkflows, values } = context.action.params; - if (!triggerWorkflows) { - return; - } + private async trigger(context) { + const { triggerWorkflows = '', values } = context.action.params; const { currentUser } = context.state; diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/utils.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/utils.ts index abc5b0aef..55fdabd43 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/utils.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/utils.ts @@ -1,15 +1,15 @@ import { Model } from '@nocobase/database'; export function toJSON(data: Model | Model[]): object { - if (typeof data !== 'object' || !data) { - return data; - } if (Array.isArray(data)) { return data.map(toJSON); } + if (!(data instanceof Model) || !data) { + return data; + } const result = data.get(); Object.keys((data.constructor).associations).forEach((key) => { - if (result[key] != null) { + if (result[key] != null && typeof result[key] === 'object') { result[key] = toJSON(result[key]); } });