+ queryValue middleware for working with query string
This commit is contained in:
1 parent
aea2b8ff25
commit
aa18f77ea7
1 file changed
+35
@@ -0,0 +1,35 @@
|
||||
let contains = (list, i) => list.indexOf(i) > -1;
|
||||
|
||||
export function queryValue(params) {
|
||||
let keys = Object.keys(params);
|
||||
|
||||
return async (ctx, next) => {
|
||||
let query = ctx.request.query;
|
||||
ctx.request.query = Object.keys(query)
|
||||
.reduce((q, i) => {
|
||||
if(contains(keys, i)){
|
||||
let fn = params[i];
|
||||
q[i] = fn(q[i]);
|
||||
}
|
||||
return q;
|
||||
}, query);
|
||||
|
||||
await next();
|
||||
};
|
||||
}
|
||||
|
||||
export function booleanify(){
|
||||
return function(value){
|
||||
if(value == 'true') return true;
|
||||
if(value == '1') return true;
|
||||
if(value == 'false') return false;
|
||||
if(value == '0') return false;
|
||||
return Boolean(value);
|
||||
}
|
||||
}
|
||||
|
||||
export function arrayify(sep){
|
||||
return function(value){
|
||||
return value.split(sep);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user