diff --git a/packages/adapter-commons/src/filter-query.ts b/packages/adapter-commons/src/filter-query.ts index 2d2be325eb..89fdd48117 100644 --- a/packages/adapter-commons/src/filter-query.ts +++ b/packages/adapter-commons/src/filter-query.ts @@ -13,7 +13,7 @@ function parse (number: any) { // default and max pagination settings function getLimit (limit: any, paginate: any) { if (paginate && paginate.default) { - const lower = typeof limit === 'number' ? limit : paginate.default; + const lower = typeof limit === 'number' && !isNaN(limit) ? limit : paginate.default; const upper = typeof paginate.max === 'number' ? paginate.max : Number.MAX_VALUE; return Math.min(lower, upper); diff --git a/packages/adapter-commons/test/filter-query.test.ts b/packages/adapter-commons/test/filter-query.test.ts index 8f5995121c..58b2925bd8 100644 --- a/packages/adapter-commons/test/filter-query.test.ts +++ b/packages/adapter-commons/test/filter-query.test.ts @@ -107,6 +107,12 @@ describe('@feathersjs/adapter-commons/filterQuery', () => { assert.strictEqual(filters.$limit, 10); assert.strictEqual(filtersNeg.$limit, 10); }); + + it('limits with default pagination when not a number', () => { + const { filters } = filterQuery({ $limit: 'something' }, { paginate: { default: 5, max: 10 } }); + + assert.strictEqual(filters.$limit, 5); + }); }); });