node-rigorous
Version:
Rigorous Framework
42 lines (37 loc) • 1.09 kB
JavaScript
;
module.exports = function createPaginationMethod() {
return function () {
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var offsetParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var limitParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 500;
var options = arguments.length > 3 ? arguments[3] : undefined;
var offset;
var limit;
try {
offset = parseInt(offsetParam, 10);
} catch (err) {
offset = 0;
}
try {
limit = parseInt(limitParam, 10);
} catch (err) {
limit = 500;
}
var Model = this;
return new Promise(function (resolve, reject) {
Model.paginate(query, Object.assign({
offset: offset,
limit: limit
}, options), function (err, result) {
// result.docs
// result.total
// result.limit - 10
// result.offset - 20
if (err) {
return reject(err);
}
return resolve(result);
});
});
};
};