diff --git a/packages/server/src/api/rest/index.ts b/packages/server/src/api/rest/index.ts index c50e5aa5b..ffb617245 100644 --- a/packages/server/src/api/rest/index.ts +++ b/packages/server/src/api/rest/index.ts @@ -1528,7 +1528,6 @@ class RequestHandler extends APIHandlerBase { } const items: any[] = []; - let currType = typeInfo; for (const [key, value] of Object.entries(query)) { if (!value) { @@ -1554,6 +1553,7 @@ class RequestHandler extends APIHandlerBase { const item: any = {}; let curr = item; + let currType = typeInfo; for (const filterValue of enumerate(value)) { for (let i = 0; i < filterKeys.length; i++) { diff --git a/packages/server/tests/api/rest.test.ts b/packages/server/tests/api/rest.test.ts index b36755055..fd2ddc262 100644 --- a/packages/server/tests/api/rest.test.ts +++ b/packages/server/tests/api/rest.test.ts @@ -633,6 +633,26 @@ describe('REST server tests', () => { prisma, }); expect(r.body.data).toHaveLength(0); + r = await handler({ + method: 'get', + path: '/post', + query: { + ['filter[author][email]']: 'user1@abc.com', + ['filter[title]']: 'Post1', + }, + prisma, + }); + expect(r.body.data).toHaveLength(1); + r = await handler({ + method: 'get', + path: '/post', + query: { + ['filter[author][email]']: 'user1@abc.com', + ['filter[title]']: 'Post2', + }, + prisma, + }); + expect(r.body.data).toHaveLength(0); // to-one relation filter r = await handler({