node.js - Filtering mongodb records based on query parameters -


i'm writing rest api in express.js retrieve records mongo database. set of records use standard request:

get localhost:3000/api/books 

now implement filters i've used express-api-queryhandler. code looks this:

routes.use(queryhandler.filter());  [...]  .get((req: any, res: response) => {     book.find(req.where, req.fields, req.options, (err: any, orders: any) => {         res.status(200).json(books);     }); }); 

so when want retrieve specific element can write e.g.:

get localhost:3000/api/books?name=harry%20potter 

but best way implement (greater/lower than) gt, gte, lt, lte functions? there libraries node.js? i've found function in loopback documentation ok use loopback express?

i write manually wouldn't nice solution. in advance.

edit: i've edited filter.js file in earlier mentioned package works gt, lt, gte, lte. looks safe maybe there better option more validation?

function filter (query, skip) {     var filters = {};     var k;      var skip_keys = [         'fields',         'limit',         'offset',         'sort'     ].concat(skip);      (k in query) {         if (skip_keys.indexof(k) === -1) {             var param = query[k];             // added part             if(param.startswith("gte_")) param = {"$gte": param.substr(4)}             else if(param.startswith("lte_")) param = {"$lte": param.substr(4)}             else if(param.startswith("gt_")) param = {"$gt": param.substr(3)}             else if(param.startswith("lt_")) param = {"$lt": param.substr(3)}             // end of added part              console.log(param);             filters[k] = param;         }     }      return filters; }  module.exports = function (options) {     var o = options || {};      return function (req, res, next) {         req.where = filter(req.query, o.skip);         next();     }; }; 


Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -