objection-querystring-parser
This library builds on top of @bitovi/querystring-parser
to transform CRUD-related querystrings into structured data for the Objection ORM.
Installation
npm install @bitovi/objection-querystring-parser
If you do not plan to use this library with Objection, please install @bitovi/querystring-parser
.
Usage
- This parser returns an array of results that can be chained together
- Each result is an object that contains an
fx
, isNested
and a parameters
key in the format { fx: 'limit', isNested: false, parameters: [10] } fx
is the name of the function to be chained to the queryisNested
is a boolean that indicates if a Query is Nested(AND, OR, NOT).parameters
where isNested
is true is an array of results each with its own fx
, isNested
and parameters
.parameters
where isNested
is false is an array of parameters to be added to the function fx
, the parameters value is an array that you would spread into your function fx
.- The results are used in the format
Query[fx1](...parameters1)[fx2](...parameters2)
. - This is better shown with an example here.
const querystringParser = require("@bitovi/objection-querystring-parser");
Sort Parameters
Reference: JSON:API - Sorting
const result = querystringParser.parse("sort=-date,name");
console.log(result);
Reference: JSON:API - Pagination
const result = querystringParser.parse("page[number]=0&page[size]=10");
console.log(result);
Fields Parameters
Reference: JSON:API - Inclusion of Related Resources
const result = querystringParser.parse("fields[people]=id,name");
console.log(result);
Include Parameters
Reference: JSON:API - Inclusion of Related Resources
const result = querystringParser.parse("include=pets,dogs");
console.log(result);
Filter Parameters
const result = querystringParser.parse(
"filter=or(any(age,'10','20'),equals(name,'mike'))"
);
console.log(result);
const result = querystringParser.parse(
"filter=not(lessOrEqual(age,'10'),equals(name,null))"
);
console.log(result);
Note: Database Validations should be done before or after passing the query to the library before the database call is made.
Example
A more practical example on how to use this library in your project can be found here.
Further Documentation
This library builds on @bitovi/querystring-parser
. See its documentation for more on using querystring-parser
.