@bee.js/node
Version:
A JavaScript framework for making Node.js API´s
47 lines (40 loc) • 1.31 kB
JavaScript
module.exports = async function request(req, res, ...validations) {
const failConditions = [];
const error = {};
let valid = true;
req.onlyFields = {};
for (let i = 0; i < validations.length; i++) {
const validation = validations[i];
// filter fields
if (validation.onlyFields && validation.onlyFields !== "*")
req.onlyFields[validation.model] = validation.onlyFields
.split(",")
.map((field) => field.trim()); //TODO otimizar colocando na memoria
// fail conditions
for ([condition, fn] of Object.entries(validation.failConditions || [])) {
let fail = await fn(req);
if (!fail || fail.error === true) {
failConditions.push(condition);
error.message = fail && fail.message ? fail.message : "";
valid = false;
}
}
}
return new Promise(function (resolve, reject) {
valid === true
? resolve(req)
: reject({
requestError: function (_error = error, errorCode = 400) {
try {
res.status(errorCode).send({
error: {
message:
_error.message || "There was an error in the request",
},
failConditions,
});
} catch {}
},
});
});
};