diff --git a/packages/core/database/src/__tests__/fields/string-field.test.ts b/packages/core/database/src/__tests__/fields/string-field.test.ts index 88898d7553..26b822f65d 100644 --- a/packages/core/database/src/__tests__/fields/string-field.test.ts +++ b/packages/core/database/src/__tests__/fields/string-field.test.ts @@ -115,9 +115,7 @@ describe('string field', () => { const model = await collection.model.create({ name: ' n1\n ', }); - expect(model.toJSON()).toMatchObject({ - name: 'n1', - }); + expect(model.get('name')).toBe('n1'); }); it('trim when value is null should be null', async () => { @@ -129,9 +127,7 @@ describe('string field', () => { const model = await collection.model.create({ name: null, }); - expect(model.toJSON()).toMatchObject({ - name: null, - }); + expect(model.get('name')).toBeFalsy(); }); it('when value is number should be convert to string', async () => { @@ -143,8 +139,6 @@ describe('string field', () => { const model = await collection.model.create({ name: 123, }); - expect(model.toJSON()).toMatchObject({ - name: '123', - }); + expect(model.get('name')).toBe('123'); }); }); diff --git a/packages/core/database/src/__tests__/fields/text-field.test.ts b/packages/core/database/src/__tests__/fields/text-field.test.ts index 1225367b9b..d79e181960 100644 --- a/packages/core/database/src/__tests__/fields/text-field.test.ts +++ b/packages/core/database/src/__tests__/fields/text-field.test.ts @@ -62,9 +62,7 @@ describe('text field', () => { const model = await collection.model.create({ name: ' n1\n ', }); - expect(model.toJSON()).toMatchObject({ - name: 'n1', - }); + expect(model.get('name')).toBe('n1'); }); it('trim when value is null should be null', async () => { @@ -76,9 +74,7 @@ describe('text field', () => { const model = await collection.model.create({ name: null, }); - expect(model.toJSON()).toMatchObject({ - name: null, - }); + expect(model.get('name')).toBeFalsy(); }); it('when value is number should be convert to string', async () => { @@ -90,8 +86,6 @@ describe('text field', () => { const model = await collection.model.create({ name: 123, }); - expect(model.toJSON()).toMatchObject({ - name: '123', - }); + expect(model.get('name')).toBe('123'); }); }); diff --git a/packages/core/database/src/fields/string-field.ts b/packages/core/database/src/fields/string-field.ts index 1b0719af8f..653beddf66 100644 --- a/packages/core/database/src/fields/string-field.ts +++ b/packages/core/database/src/fields/string-field.ts @@ -20,12 +20,16 @@ export class StringField extends Field { } additionalSequelizeOptions() { - const { name, trim } = this.options; + const { name, trim, unique } = this.options; return { set(value) { + if (unique && value === '') { + value = null; + } if (value == null) { - return value; + this.setDataValue(name, null); + return; } if (typeof value !== 'string') { value = value.toString(); diff --git a/packages/core/database/src/fields/text-field.ts b/packages/core/database/src/fields/text-field.ts index 4b045db75e..10b7d99811 100644 --- a/packages/core/database/src/fields/text-field.ts +++ b/packages/core/database/src/fields/text-field.ts @@ -25,12 +25,16 @@ export class TextField extends Field { } additionalSequelizeOptions() { - const { name, trim } = this.options; + const { name, trim, unique } = this.options; return { set(value) { + if (unique && value === '') { + value = null; + } if (value == null) { - return value; + this.setDataValue(name, null); + return; } if (typeof value !== 'string') { value = value.toString();