Skip to content

Instantly share code, notes, and snippets.

@mmirolim
Last active August 29, 2015 14:02
Show Gist options
  • Save mmirolim/4592f303b890f20885f8 to your computer and use it in GitHub Desktop.
Save mmirolim/4592f303b890f20885f8 to your computer and use it in GitHub Desktop.
/**
* Created by Simon on 6/23/14.
*/
// parsable url example parse?limit=2&offset=2&sort=grpId%20DESC&filter={"grpId":{">":"1"}}
// in api/services
exports.parseGetParams = function (params) {
var query = {
limit : 10,
offset: 0,
sort : 'id DESC',
filter: []
};
for (var key in query) {
if (params.hasOwnProperty(key)) {
if (params[key] !== '') {
if (key === 'filter') {
// where params
var filter = JSON.parse(params[key]);
var where = {}
if (filter.length > 1) {
where.or = filter
} else {
where = filter;
}
query[key] = where;
} else {
// basic sort, limit, offset params
query[key] = params[key];
}
}
}
}
return query
}
// in task controller example action
parse: function (req, res) {
var allParams = req.allParams();
// query parser
var qp = ParserService.parseGetParams(allParams);
//res.json(qp);
Task.find()
.where(
qp.filter
)
.skip(qp.offset)
.limit(qp.limit)
.sort(qp.sort)
.exec( function (err, tasks) {
if (err) {
res.json(err);
}
if (tasks) {
res.json(tasks);
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment