@36node/query-normalizr
Version:
A module boilerplate for nodejs and web.
3 lines (2 loc) • 958 B
JavaScript
var e=require("lodash");exports.toMongooseQuery=function(t){var r=t._limit,o=t._offset,n=t._sort,i=t._populate,s=t._select,u=t._group,a=function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(r[o]=e[o]);return r}(t,["_limit","_offset","_sort","_populate","_select","_group"]);return{limit:r,offset:o,sort:n,populate:i,select:s,group:u,filter:Object.keys(a).reduce(function(t,r){var o=a[r],n="id"===r?"_id":[r],i=!1,s=/(.+)_(like|not)/.exec(r);return s&&(n=[s[1]],i=!0),(s=/(.+)_(gt|lt|gte|lte|ne|not)$/.exec(r))&&(n=[s[1],"$"+s[2]]),"q"===r&&(n="$text",o={$search:o}),e.set(t,n,function t(r,o){if(e.isArray(r))return{$in:r.map(function(e){return t(e,o)})};if(e.isNil(r)||"string"!=typeof r)return r;if((r=r.trim())&&o)return new RegExp(r.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"i");switch(r.toLowerCase()){case"*":r={$ne:[]};break;case"none":r={$eq:[]}}return r}(o,i))},{})}};
//# sourceMappingURL=index.js.map