- Notifications
You must be signed in to change notification settings - Fork3
Middleware to transform query strings in a format that is recognized by the MongoDB, MySQL and other databases...
License
nutes-uepb/query-strings-parser
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Middleware to transform query strings in a format that is recognized by the MongoDB, MySQL¹ and other databases.
To ensure the smooth operation of the middleware, your web application must be built using theexpress.js orhapi.js frameworks.
Use the npm command to install this library into your project:
npm i query-strings-parser --save
constexpress=require('express')constqs=require('query-strings-parser')constapp=express()app.use(qs())// middleware query-strings-parserapp.listen(3000,(req,res)=>{console.log('app listening on port 3000')})app.get('/',(req,res)=>{res.send('the query is:'+JSON.stringify(req.query))})/** * Request: http://localhost:3000?fields=name,age&skip=10&limit=10&sort=created_at * Result (req.query): * { * fields: { name: 1, age: 1 }, * sort: { created_at: 1 } * filters: {}, * pagination: { * skip: 10, * limit: 10 * }, * original: '?fields=name,age&skip=10&limit=10&sort=created_at' * } */
constexpress=require('express')constqs=require('query-strings-parser')constapp=express()app.use(qs({use_page:true,client_db:'mongodb',date_field:{start_at:'timestamp',end_at:'timestamp'},default:{fields:{name:1,age:1,number:1,_id:0},sort:{created_at:-1},filters:{},pagination:{page:1,limit:100}}}))/** * Request: http://localhost:3000?fields=name,age&age=30 * Result (req.query): * { * fields: { name: 1, age: 1}, * sort: { created_at: -1 } * filters: {age: 30}, * pagination: { * limit: 100, * page: 1 * }, * original: '?fields=name,age&age=30' * } */
The middleware uses the following defaults:
options={use_page:false,client_db:'mongodb',date_field:{start_at:'created_at',end_at:'created_at'},default:{fields:{},sort:{},filters:{},pagination:{limit:Number.MAX_SAFE_INTEGER,skip:0,page:1}}}
If the options are not provided, the default values will be used for the treatment of queries strings.
For more details, access thewiki page.
To use these functions, simply call them through the middleware instance and pass them the query string to be converted and its default values. If you pass the default values a merge will be performed with the result of the query strings. Here are some examples of each analyzer:
parser()
constqs=require('query-strings-parser')constquery='?fields=name,age&page=1&limit=10&sort=created_at'console.log(qs.parseFields(query,{},{use_page:true}))/*** Result:* {* fields: { name: 1, age: 1 },* sort: { created_at: 1 },* filters: {},* pagination: { limit: 10, page: 1 },* original: '?fields=name,age&page=1&limit=10&sort=created_at'* }*/
For moredetails >>
parseFields()
constqs=require('query-strings-parser')constquery='?fields=name,age'console.log(qs.parseFields(query))/*** Result:* {* name: 1,* age: 1* }*/
For moredetails >>
parseSort()
constqs=require('query-strings-parser')constquery='?sort=name,-age,created_at'console.log(qs.parseSort(query))/*** Result:* {* name: 1,* age: -1,* created_at: 1* }*/
For moredetails >>
parsePagination()
constqs=require('query-strings-parser')constquery='?limit=20&page=3'console.log(qs.parsePagination(query,{},true))/*** Result:* {* limit: 20,* page: 3* }*/
For moredetails >>
parseFilter()
constqs=require('query-strings-parser')constquery='?name=elvis&age=80'console.log(qs.parseFilter(query))/** * Result: * { * name: 'elvis', * age: 80 * } */
For moredetails >>
parseDate()
constqs=require('query-strings-parser')constquery='?start_at=2019-02-05T00:00:00&end_at=2019-02-05T23:59:59'console.log(qs.parseDate(query))/*** Result:* {* $and: [* { created_at: { lt: 2019-02-05T23:59:59 }},* { created_at: { gte: 2019-02-05T00:00:00 }}* ]}* }*/
For moredetails >>
For informations and details about the supported query strings, access thewiki page.
- ¹Support for relational databases such as MySQL, PostgreSQL and SQLite.
About
Middleware to transform query strings in a format that is recognized by the MongoDB, MySQL and other databases...
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.