diff --git a/packages/server/src/api/rest/index.ts b/packages/server/src/api/rest/index.ts index ffb617245..f2af87f0b 100644 --- a/packages/server/src/api/rest/index.ts +++ b/packages/server/src/api/rest/index.ts @@ -1750,7 +1750,12 @@ class RequestHandler extends APIHandlerBase { : this.makePrismaIdFilter(info.idFields, value, false); return { some: filterValue }; } else { - return { is: this.makePrismaIdFilter(info.idFields, value, false) }; + const values = value.split(',').filter((i) => i); + if (values.length > 1) { + return { OR: values.map((v) => this.makePrismaIdFilter(info.idFields, v, false)) }; + } else { + return { is: this.makePrismaIdFilter(info.idFields, value, false) }; + } } } else { const coerced = this.coerce(fieldInfo.type, value); diff --git a/packages/server/tests/api/rest.test.ts b/packages/server/tests/api/rest.test.ts index fd2ddc262..e246859cb 100644 --- a/packages/server/tests/api/rest.test.ts +++ b/packages/server/tests/api/rest.test.ts @@ -664,6 +664,15 @@ describe('REST server tests', () => { expect(r.body.data).toHaveLength(1); expect(r.body.data[0]).toMatchObject({ id: 1 }); + // relation filter with multiple values + r = await handler({ + method: 'get', + path: '/post', + query: { ['filter[author]']: 'user1,user2' }, + prisma, + }); + expect(r.body.data).toHaveLength(2); + // invalid filter field r = await handler({ method: 'get',