node-rigorous
Version:
Rigorous Framework
37 lines (27 loc) • 1.13 kB
JavaScript
const rigorousMongoose = require('mongoose');
const RigorousError = require('../facades/RigorousError');
const errorsMessages = require('../etc/errorsMessages');
const helperFormatChecker = require('../helpers/format_checker');
module.exports = (modelName, attribute) => {
return {
validator: async (value) => {
let document = null;
const condition = { [attribute]: value };
try {
document = await rigorousMongoose
.model(modelName)
.findOne(condition)
.select('_id')
.exec();
} catch (error) {
throw new RigorousError(errorsMessages.OperationError, error);
}
if (!helperFormatChecker.isNil(document)) {
const errorWithAttribute = errorsMessages.ValidatorError.AlreayExist.withAttribute(attribute.toUpperCase());
throw new RigorousError(errorWithAttribute);
}
return true;
},
message: props => `${props.value} already exist`,
};
};