stagify
Version:
mongoose aggregate pipeline parser
34 lines (33 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var querify_1 = require("./querify");
var index_1 = require("./index");
exports.default = (function (query) {
var _a = (0, querify_1.default)(query), filters = _a.filters, select = _a.select, options = _a.options;
var skip = options.skip, limit = options.limit, sort = options.sort;
var stages = [
{
$match: filters,
},
];
var project = (0, index_1.projectize)(select);
if (project)
stages.push(project);
if ((0, index_1.isValidObject)(sort || {})) {
for (var key in sort) {
sort[key] = typeof sort[key] === 'string' ? parseInt(sort[key]) : sort[key];
}
stages.push({
$sort: sort,
});
}
if (options.limit || filters.page) {
stages.push({
$skip: typeof skip === 'string' ? parseInt(skip) : skip,
});
stages.push({
$limit: typeof limit === 'string' ? parseInt(limit) : limit,
});
}
return stages;
});