Code Monkey home page Code Monkey logo

qs-to-sequelize's Introduction

QS to Sequelize

This library takes a querystring and turns it into something you can give to Sequelize.

Installation

yarn add qs-to-sequelize

or

npm install -g qs-to-sequelize

Example

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));
  })

Opts

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

API

The querystring params you can pass are:

per_page

The number of results you want to receive.

?per_page=10 -> { limit: 10 }

page

The page you are interested in.

?page=2&per_page=10 -> { offset: 10, limit: 10 }

sort

The property you want the results sorted by

?sort=quantity -> { order: ['quantity', 'ASC'] }

-sort

The property you want the results sorted by in descending order

?sort=-quantity -> { order: ['quantity', 'DESC'] }

filter[key]

A property you want to filter by

NB: Express parses filter[key] into {filter: key} and that's what we expect

?filter%5Bfoo%5D=bar -> { where: { foo: 'bar' } }`

filter[key]&filter[key]

Many properties you want to filter by

?filter%5Bfoo%5D=bar&filter%5Bbaz%5D=quux -> { where: { foo: 'bar', baz: 'quux' } }`

updated_since

Only return documents updated since this time

updated_since=2016-12-19T05%3A34%3A15.518Z -> { where: { updated_at: { $gt: '2016-12-19T05:34:15.518Z' } } }

updated_before

Only return documents updated before this time

updated_before=2016-12-19T05%3A34%3A15.518Z -> { where: { updated_at: { $lt: '2016-12-19T05:34:15.518Z' } } }

created_since

Only return documents created since this time

created_since=2016-12-19T05%3A34%3A15.518Z -> { where: { created_at: { $gt: '2016-12-19T05:34:15.518Z' } } }

created_before

Only return documents created before this time

created_before=2016-12-19T05%3A34%3A15.518Z -> { where: { created_at: { $lt: '2016-12-19T05:34:15.518Z' } } }

NB

If the library doesn't like something it's passed, it will throw 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.

Dedication

Development of this library was funded by Ordermentum

qs-to-sequelize's People

Contributors

davidbanham avatar

Stargazers

Viacheslav avatar Ilai Fallach avatar codercat avatar Leo Dutra avatar Elvis Yang avatar Jon Perl avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.