diff --git a/packages/db-postgres/src/queries/parseParams.ts b/packages/db-postgres/src/queries/parseParams.ts index 570c9c5caf..f6b1622b4b 100644 --- a/packages/db-postgres/src/queries/parseParams.ts +++ b/packages/db-postgres/src/queries/parseParams.ts @@ -71,7 +71,7 @@ export async function parseParams({ // So we need to loop on keys again here to handle each operator independently const pathOperators = where[relationOrPath] if (typeof pathOperators === 'object') { - for (const operator of Object.keys(pathOperators)) { + for (let operator of Object.keys(pathOperators)) { if (validOperators.includes(operator as Operator)) { const val = where[relationOrPath][operator] const { @@ -157,6 +157,13 @@ export async function parseParams({ break } + if ( + operator === 'like' && + (field.type === 'number' || table[columnName].columnType === 'PgUUID') + ) { + operator = 'equals' + } + if (operator === 'like') { constraints.push( and(...val.split(' ').map((word) => ilike(table[columnName], `%${word}%`))), diff --git a/test/collections-rest/int.spec.ts b/test/collections-rest/int.spec.ts index 1e21f7a594..8398a1c51c 100644 --- a/test/collections-rest/int.spec.ts +++ b/test/collections-rest/int.spec.ts @@ -513,6 +513,26 @@ describe('collections-rest', () => { expect(result.docs).toEqual([post]) expect(result.totalDocs).toEqual(1) }) + + it('should query LIKE by ID', async () => { + const post = await payload.create({ + collection: slug, + data: { + title: 'find me buddy', + }, + }) + + const { result, status } = await client.find({ + query: { + id: { + like: post.id, + }, + }, + }) + + expect(status).toStrictEqual(200) + expect(result.totalDocs).toStrictEqual(1) + }) }) it('should query nested relationship - hasMany', async () => {