automiddleware
Version:
55 lines (53 loc) • 1.59 kB
JavaScript
;
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();
}
});
};