diff --git a/packages/actions/src/__tests__/destroy.test.ts b/packages/actions/src/__tests__/destroy.test.ts index aee4db3b6..61e6dcaed 100644 --- a/packages/actions/src/__tests__/destroy.test.ts +++ b/packages/actions/src/__tests__/destroy.test.ts @@ -16,7 +16,7 @@ describe('destroy', () => { const response = await agent .delete(`/posts/${post.id}`); // console.log(response.body); - expect(response.body).toBe(post.id); + expect(response.body.count).toBe(1); }); it('batch delete by filter', async () => { diff --git a/packages/actions/src/actions/common.ts b/packages/actions/src/actions/common.ts index 511e64459..747bee9eb 100644 --- a/packages/actions/src/actions/common.ts +++ b/packages/actions/src/actions/common.ts @@ -442,6 +442,7 @@ export async function destroy(ctx: Context, next: Next) { } = ctx.action.params; const transaction = await ctx.db.sequelize.transaction(); const commonOptions = { transaction, context: ctx }; + let count; if (associated && resourceField) { const AssociatedModel = ctx.db.getModel(associatedName); if (!(associated instanceof AssociatedModel)) { @@ -456,7 +457,7 @@ export async function destroy(ctx: Context, next: Next) { // TODO:不能程序上解除关系,直接通过 onDelete 触发,或者通过 afterDestroy 处理 // await associated[setAccessor](null, commonOptions); // @ts-ignore - ctx.body = await model.destroy(commonOptions); + count = await model.destroy(commonOptions); } else if (resourceField instanceof HASMANY || resourceField instanceof BELONGSTOMANY) { const primaryKey = resourceKeyAttribute || resourceField.options.targetKey || TargetModel.primaryKeyAttribute; const models: Model[] = await associated[getAccessor]({ @@ -466,7 +467,7 @@ export async function destroy(ctx: Context, next: Next) { // TODO:不能程序上解除关系,直接通过 onDelete 触发,或者通过 afterDestroy 处理 // await associated[removeAccessor](models, commonOptions); // @ts-ignore - ctx.body = await TargetModel.destroy({ + count = await TargetModel.destroy({ where: { [primaryKey]: { [Op.in]: models.map(item => item[primaryKey]) } }, ...commonOptions, individualHooks: true, @@ -476,14 +477,14 @@ export async function destroy(ctx: Context, next: Next) { const Model = ctx.db.getModel(resourceName); const { where } = Model.parseApiJson({ filter, context: ctx }); const primaryKey = resourceKeyAttribute || Model.primaryKeyAttribute; - const data = await Model.destroy({ + count = await Model.destroy({ where: resourceKey ? { [primaryKey]: resourceKey } : where, // @ts-ignore hooks 里添加 context ...commonOptions, individualHooks: true, }); - ctx.body = data; } + ctx.body = { count }; await transaction.commit(); await next(); } diff --git a/packages/plugin-collections/src/collections/collections.ts b/packages/plugin-collections/src/collections/collections.ts index e258890af..80425b057 100644 --- a/packages/plugin-collections/src/collections/collections.ts +++ b/packages/plugin-collections/src/collections/collections.ts @@ -274,6 +274,11 @@ export default { list: { sort: 'sort', }, + destroy: { + filter: { + default: false + } + } }, component: { type: 'drawerSelect', @@ -290,6 +295,11 @@ export default { list: { sort: 'sort', }, + destroy: { + filter: { + default: false + } + } }, component: { type: 'drawerSelect', diff --git a/packages/plugin-collections/src/collections/tabs.ts b/packages/plugin-collections/src/collections/tabs.ts index d46599516..4298a4d2a 100644 --- a/packages/plugin-collections/src/collections/tabs.ts +++ b/packages/plugin-collections/src/collections/tabs.ts @@ -349,6 +349,9 @@ export default { type: 'destroy', name: 'destroy', title: '删除', + filter: { + default: false + } }, { type: 'create', diff --git a/packages/plugin-collections/src/collections/views.ts b/packages/plugin-collections/src/collections/views.ts index cf6b2d4b3..49e77a779 100644 --- a/packages/plugin-collections/src/collections/views.ts +++ b/packages/plugin-collections/src/collections/views.ts @@ -353,6 +353,9 @@ export default { type: 'destroy', name: 'destroy', title: '删除', + filter: { + default: false + } }, { type: 'create',