1.0.9 • Published 2 years ago

request-query-utils v1.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

request-query-utils

A package to isolate filters and sorts from a given request's query parameters

Installation

# using npm
npm install request-query-utils

# using yarn
yarn add request-query-utils

Usage

# using require
const { getRequestFilters, getRequestSorts, getRequestQueryParams } = require("request-query-utils");

# using import
import { getRequestFilters, getRequestSorts, getRequestQueryParams } from "request-query-utils";

Example

  • Example request uri - ?filtername=Ciri&filterage=19&sort=-id&sort=height

const params = getRequestQueryParams({
  req, // node.js request object
});

console.log(params) // output: [{ key: 'filter[name]', value: 'Ciri' }, { key: 'filter[age]', value: '19' }, { key: 'sort', value: '-id' }, { key: 'sort', value: 'height' } ]

const filters = getRequestFilters({
  req, // node.js request object
});

console.log(filters) // output - [ { key: 'name', value: 'Ciri' }, { key: 'age', value: '19' } ]

const sorts = getRequestSorts({
  req, // node.js request object
});

console.log(sorts) // output - [ { key: 'id', value: -1 }, { key: 'height', value: 1 } ]

Additional Options

  • All functions can take in an addition boolean parameter returnObject which will return a single object with the merged values isolated from the function. The return type by default is an array.

  • For example, requests to above three functions with returnObject provided as true will result in the following outputs:

// getRequestQueryParams - { 'filter[name]': 'Ciri', 'filter[age]': '19', sort: '-id', 'sort-1652632797392': 'height'  }

// getRequestFilters - { name: 'Ciri', age: '19' }

// getRequestSorts - { id: -1, height: 1 }
  • The getRequestFilters function can take in the parameter mongooseSupport which will modify the filter object in certain ways to match a mongoose filter query:

  • For example, requests to above three functions with returnObject provided as true will result in the following outputs:

// Request uri - ?filter[name]=Ciri&filter[age]=19,20,21,22&sort=-id&sort=height

// getRequestFilters - { name: 'Ciri', age: { $in: ['19', '20', '21', '22'] } }
1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago