UNPKG

automiddleware

Version:

55 lines (53 loc) 1.59 kB
'use strict'; module.exports = function (app) { app.middleware = Object.assign(app.middleware || {}, { limit: (req, res, next) => { if (req.method !=='GET') return next(); req.limit = {}; if (req.query.$limit || req.query.$limit === 0) { req.limit.limit = parseInt(req.query.$limit); } if (req.query.$offset || req.query.$limit === 0) { req.limit.skip = parseInt(req.query.$offset || '0'); } delete req.query.$limit; delete req.query.$offset; next(); }, projection: (req, res, next) => { if (req.method !== 'GET') return next(); if (req.query.$projection) { req.projection = JSON.parse(req.query.$projection); } delete req.query.$projection; next(); }, orderBy: (req, res, next) => { if (req.method !=='GET') return next(); if (req.query.$sort) { req.sort = JSON.parse(req.query.$sort); } delete req.query.$sort; delete req.query.$desc; next(); }, pageSize: (req, res, next) => { if (req.method !=='GET') return next(); if (req.query.$pagesize) { req.pagesize = parseInt(req.query.$pagesize); } delete req.query.$pagesize; next(); }, filter: (req, res, next) => { if (req.method !=='GET') return next(); for (let k in req.query) { let p = req.query[k]; if (p.indexOf('/') === 0 && p.lastIndexOf('/') === p.length){ req.query[k] = eval(`/${req.query[k].replace(/\//g,'')}/`); } } next(); } }); };