New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

sequelize-querystring-converter

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sequelize-querystring-converter

Enable filter, sort, paginate and search on your dataset by simply adding some query parameters on your API.

  • 1.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
254
decreased by-27.64%
Maintainers
1
Weekly downloads
 
Created
Source

Sequelize querystring converter

Build Status

Convert your query string into sequlize query criteria to filter, sort, paginate and search your data.

Installation

npm install sequelize-querystring-converter

or

yarn add sequelize-querystring-converter

Features

  • Pagination using limit and offset query parameters
  • Multi-Column Sort
  • Filtering with operator support (currently supported: and, or, gt, gte, lt, lte, ne, between, notBetween, in, notIn, overlap, contains, and contained)

Note: Complex filtering is not yet supported (ex: Product.findAll({ where: { id: { ['$or']: [ [ 1, 2, 3 ], { ['$gt']: 10 } ] } } }))

Usage

const queryStringConverter = require('sequelize-querystring-converter');

const obj = queryStringConverter.convert({
  query: {
    category: 'Shirts',
    name: 'substring:Shirt',
    price: 'between:0,5000',
    discount: 'gte:10',
    brand: 'in:Nike,New Balance,Puma',
    color: 'black',
    sort: '-price',
    offset: 15,
    limit: 15
  },
  basedProperties: ['name', 'price', 'discount', 'brand']
});
// category property will be ignored because it's not defined in basedProperties
// obj = {
//  where: {
//    name: { [Symbol(substring)]: 'Shirt' },
//    price: { [Symbol(between)]: ['0', '5000'] },
//    discount: { [Symbol(gte)]: '10' },
//    brand: { [Symbol(10)]: ['Nike', 'New Balance', 'Puma'] }
//    color: 'black'
//  },
//  order: [['price', 'DESC']],
//  offset: 15,
//  limit: 15,
// };

API

convert({ sort, offset, limit, basedProperties })

Convert object into sequelize criteria

sort

Type: string

default: undefined

An optional parameter to describe sorting rules (ascending or descending). Use - sign for descending while + for ascending, by default if sign is not presented it will automatically set to + sign (ex: sort=-createdAt or sort=+createdAt). Value can be separated by a comma if multiple sort condition is needed (ex: sort=id,name).

offset

Type: string

default: undefined

An optional parameter to define how many data will be skipped.

limit

Type: string

default: undefined

An optional parameter to define how many data will be displayed.

basedProperties

Type: Array<string> default: undefined

An optional parameter to define what properties will be used for filtering, sorting and searching.

Example

const querystringConverter = require('sequelize-querystring-converter');
const { Product } = require('../models');

async function listProducts = async (req, res) {
  // assuming api request would be like this
  // base_url/products?brand=Nike&sort=-createdAt
  // then query object will be equal to this
  // { brand: 'Nike', sort: '-createdAt' }
  const { query } = req;

  try {
    const criteria = querystringConverter.convert({ query });
    // criteria = { where: { brand: 'Nike' }, order: [ ['createdAt', 'DESC'] ]}

    const products = await Product.findAll(criteria);
    // products = [
    // {id: 2, name: 'Sample Product 2', brand: 'Nike', createdAt: '2019-07-18 08:25:30'},
    // {id: 1, name: 'Sample Product 1', brand: 'Nike', createdAt '2019-07-16 10:00:01}
    // ...
    //]

    res.status(200).json(products);
  } catch (error) {
    res.status(400).json(error);
  }
}

module.exports = { listProducts };

Keywords

FAQs

Package last updated on 12 May 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc