@sliit-foss/request-query-utils

1.1.1 • Public • Published

@sliit-foss/request-query-utils

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


Installation

# using npm
npm install @sliit-foss/request-query-utils

# using yarn
yarn add @sliit-foss/request-query-utils

Usage

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

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

Example

  • Example request uri - ?filter[name]=Ciri&filter[age]=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'] } }

Package Sidebar

Install

npm i @sliit-foss/request-query-utils

Weekly Downloads

1

Version

1.1.1

License

MIT

Unpacked Size

12.3 kB

Total Files

5

Last publish

Collaborators

  • sliit.foss