diff --git a/packages/common/infra/src/orm/core/__tests__/hook.spec.ts b/packages/common/infra/src/orm/core/__tests__/hook.spec.ts index 35c1378aa5..9fd3e65c53 100644 --- a/packages/common/infra/src/orm/core/__tests__/hook.spec.ts +++ b/packages/common/infra/src/orm/core/__tests__/hook.spec.ts @@ -125,6 +125,6 @@ describe('ORM hook mixin', () => { // @ts-expect-error private const rawTag = client.tags.adapter.data.get(tag.id); expect(rawTag.color).toBe('red'); - expect(rawTag.colors).toBe(null); + expect(rawTag.colors).toBe(undefined); }); }); diff --git a/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts b/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts index 77cd42ab26..845840e72a 100644 --- a/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts +++ b/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts @@ -368,7 +368,7 @@ describe('ORM entity CRUD', () => { name: 'test', }); - expect(user.email).toBe(null); + expect(user.email).toBe(undefined); } { diff --git a/packages/common/infra/src/orm/core/adapters/yjs/table.ts b/packages/common/infra/src/orm/core/adapters/yjs/table.ts index e01f3f4cb3..1564fb8fe7 100644 --- a/packages/common/infra/src/orm/core/adapters/yjs/table.ts +++ b/packages/common/infra/src/orm/core/adapters/yjs/table.ts @@ -64,6 +64,10 @@ export class YjsTableAdapter implements TableAdapter { this.doc.transact(() => { for (const key in data) { + if (data[key] === undefined) { + // skip undefined fields, avoid unexpected override + continue; + } record.set(key, data[key]); } diff --git a/packages/common/infra/src/orm/core/table.ts b/packages/common/infra/src/orm/core/table.ts index bad752d2d3..02a3b93119 100644 --- a/packages/common/infra/src/orm/core/table.ts +++ b/packages/common/infra/src/orm/core/table.ts @@ -160,11 +160,11 @@ export class Table { if (inputVal === undefined) { if (schema.optional) { - acc[key] = null; + acc[key] = undefined; } if (schema.default) { - acc[key] = schema.default() ?? null; + acc[key] = schema.default() ?? undefined; } }