diff --git a/packages/drizzle/src/transform/write/traverseFields.ts b/packages/drizzle/src/transform/write/traverseFields.ts index 7fa8430cc6..57bfc1f65e 100644 --- a/packages/drizzle/src/transform/write/traverseFields.ts +++ b/packages/drizzle/src/transform/write/traverseFields.ts @@ -496,6 +496,10 @@ export const traverseFields = ({ formattedValue = sql`ST_GeomFromGeoJSON(${JSON.stringify(value)})` } + if (field.type === 'text' && value && typeof value !== 'string') { + formattedValue = JSON.stringify(value) + } + if (field.type === 'date') { if (typeof value === 'number' && !Number.isNaN(value)) { formattedValue = new Date(value).toISOString() diff --git a/test/database/config.ts b/test/database/config.ts index b8331c6958..f9f8be424d 100644 --- a/test/database/config.ts +++ b/test/database/config.ts @@ -44,6 +44,10 @@ export default buildConfigWithDefaults({ type: 'text', required: true, }, + { + name: 'text', + type: 'text', + }, { name: 'number', type: 'number', diff --git a/test/database/int.spec.ts b/test/database/int.spec.ts index f4e6263e6f..2cb385f815 100644 --- a/test/database/int.spec.ts +++ b/test/database/int.spec.ts @@ -1979,6 +1979,19 @@ describe('database', () => { }) }) + it('should convert numbers to text', async () => { + const result = await payload.create({ + collection: postsSlug, + data: { + title: 'testing', + // @ts-expect-error hardcoding a number and expecting that it will convert to string + text: 1, + }, + }) + + expect(result.text).toStrictEqual('1') + }) + it('should not allow to query by a field with `virtual: true`', async () => { await expect( payload.find({