dino-express
Version:
DinO enabled REST framework based on express
31 lines • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectionsMiddleware = void 0;
const dino_core_1 = require("dino-core");
const after_handler_middleware_1 = require("../../after.handler.middleware");
const lodash_1 = require("lodash");
class ProjectionsMiddleware extends after_handler_middleware_1.AfterHandlerMiddleware {
/**
* Definition of the function that will handle the projections business logic associated with this middleware.
*
* @param {import('express').Request} req Express request instance
* @param {import('express').Response} res express response instance
* @param {Function} next the next function that will be invoked as part of the express chain
*/
handle(req, res, next) {
const projections = req.headers['x-project'];
if (dino_core_1.ObjectHelper.isNotDefined(projections)) {
return next();
}
const filters = (typeof projections === 'string' ? projections.split(',') : projections);
if (Array.isArray(res.body)) {
res.body = res.body.map((obj) => (0, lodash_1.pick)(obj, filters));
}
else {
res.body = (0, lodash_1.pick)(res.body, filters);
}
next();
}
}
exports.ProjectionsMiddleware = ProjectionsMiddleware;
//# sourceMappingURL=ProjectionsMiddleware.js.map