From c06625b88a95203c8309fbf7c4121a89747d994c Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 13 Oct 2019 21:50:50 +0200 Subject: [PATCH 1/3] chore(documentation): explicit citing the preset defaults --- README.md | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c5ace5..34cd3dd 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,51 @@ npm install --save querymen ## Examples ### Pagination -Querymen has a default schema to handle pagination. This is the most simple and common usage. +Querymen has a default schema to handle pagination as shown below. + +```js +{ + page: { + type: Number, + default: 1, + max: 30, + min: 1, + bindTo: 'cursor', + parse: (value, path, operator, param) => { + return {skip: this.param('limit').value() * (value - 1)} + } + }, + limit: { + type: Number, + default: 30, + max: 100, + min: 1, + bindTo: 'cursor', + parse: (value) => ({limit: value}) + }, + sort: { + type: [String], + default: '-createdAt', + bindTo: 'cursor', + parse: (value) => { + let fields = _.isArray(value) ? value : [value] + let sort = {} + fields.forEach((field) => { + if (field.charAt(0) === '-') { + sort[field.slice(1)] = -1 + } else if (field.charAt(0) === '+') { + sort[field.slice(1)] = 1 + } else { + sort[field] = 1 + } + }) + return {sort: sort} + } + } +} +``` + +This is the most simple and common usage. ```js import { middleware as query } from 'querymen'; From bb28cae1de58acd017981fa60bb178cd5e72b076 Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 13 Oct 2019 21:56:22 +0200 Subject: [PATCH 2/3] fix(defaults): now default results are not limited to 20 element if pagination is not specified --- README.md | 8 ++++---- src/querymen-schema.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 34cd3dd..49f5f01 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Querymen has a default schema to handle pagination as shown below. page: { type: Number, default: 1, - max: 30, + max: Infinity, min: 1, bindTo: 'cursor', parse: (value, path, operator, param) => { @@ -34,9 +34,9 @@ Querymen has a default schema to handle pagination as shown below. }, limit: { type: Number, - default: 30, - max: 100, - min: 1, + default: 0, + max: Infinity, + min: 0, bindTo: 'cursor', parse: (value) => ({limit: value}) }, diff --git a/src/querymen-schema.js b/src/querymen-schema.js index 311a672..74c83a4 100644 --- a/src/querymen-schema.js +++ b/src/querymen-schema.js @@ -95,7 +95,7 @@ export default class QuerymenSchema { page: { type: Number, default: 1, - max: 30, + max: Infinity, min: 1, bindTo: 'cursor', parse: (value, path, operator, param) => { @@ -104,9 +104,9 @@ export default class QuerymenSchema { }, limit: { type: Number, - default: 30, - max: 100, - min: 1, + default: 0, + max: Infinity, + min: 0, bindTo: 'cursor', parse: (value) => ({limit: value}) }, From 9cd0efef5bb14dbc6806db84e175f09782557acf Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 13 Oct 2019 21:58:34 +0200 Subject: [PATCH 3/3] fix(tests) --- test/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/index.js b/test/index.js index 04ee025..998c68c 100644 --- a/test/index.js +++ b/test/index.js @@ -97,10 +97,10 @@ test('Querymen middleware', (t) => { request(app) .get('/tests') .query({page: 50}) - .expect(400) + .expect(200) .end((err, res) => { if (err) throw err - t.equal(res.body.param, 'page', 'should respond with error object') + t.equal(res.body.length, 4) }) request(app)