diff --git a/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/__tests__/ui-schema-repository.test.ts b/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/__tests__/ui-schema-repository.test.ts index cbb26f86c..7369f0fd9 100644 --- a/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/__tests__/ui-schema-repository.test.ts +++ b/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/__tests__/ui-schema-repository.test.ts @@ -225,6 +225,11 @@ describe('ui_schema repository', () => { expect(s2['x-uid']).not.toEqual(s['x-uid']); }); + it('should be null', async () => { + const s2 = await repository.duplicate('test-null'); + expect(s2).toBeNull(); + }); + describe('schema', () => { let schema; beforeEach(() => { diff --git a/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/repository.ts b/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/repository.ts index c42f561b6..2fc2a9e07 100644 --- a/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/repository.ts +++ b/packages/plugins/@nocobase/plugin-ui-schema-storage/src/server/repository.ts @@ -445,6 +445,9 @@ export class UiSchemaRepository extends Repository { @transaction() async duplicate(uid: string, options?: Transactionable) { const s = await this.getJsonSchema(uid, { ...options, includeAsyncNode: true }); + if (!s?.['x-uid']) { + return null; + } this.regenerateUid(s); return this.insert(s, options); }