Transform a querystring into a sequelize query
npm install qs-to-sequelizeThis library takes a querystring and turns it into something you can give to Sequelize.
``javascript
const queryLib = require('../lib/query')();
const User = require('../models/user');
const router = new Router();
router
.get('', async (req, res) => {
const query = queryLib(req.query);
res.json(await User.findAll(query));
})
`
You can pass the following options:
``
{
max_per_page: 20,
default_per_page: 10,
}
Like so:
``
const queryLib = require('../lib/query')({max_per_page: 20});
Opts are new as of version 2.x.x
The querystring params you can pass are:
?per_page=10 -> { limit: 10 }
?page=2&per_page=10 -> { offset: 10, limit: 10 }
?sort=quantity -> { order: ['quantity', 'ASC'] }
?sort=-quantity -> { order: ['quantity', 'DESC'] }
NB: Express parses filter[key] into {filter: key} and that's what we expect
?filter%5Bfoo%5D=bar -> { where: { foo: 'bar' } }
?filter%5Bfoo%5D=bar&filter%5Bbaz%5D=quux -> { where: { foo: 'bar', baz: 'quux' } }
updated_since=2016-12-19T05%3A34%3A15.518Z -> { where: { updated_at: { $gt: '2016-12-19T05:34:15.518Z' } } }
updated_before=2016-12-19T05%3A34%3A15.518Z -> { where: { updated_at: { $lt: '2016-12-19T05:34:15.518Z' } } }
created_since=2016-12-19T05%3A34%3A15.518Z -> { where: { created_at: { $gt: '2016-12-19T05:34:15.518Z' } } }
created_before=2016-12-19T05%3A34%3A15.518Z -> { where: { created_at: { $lt: '2016-12-19T05:34:15.518Z' } } }
an error back at you.Use something that handles errors for you like:
https://www.npmjs.com/package/express-async-errors
or
https://www.npmjs.com/package/express-yields
or
Wrap calls in a
try`.Development of this library was funded by Ordermentum