Я использую Joi для проверки некоторых данных от пользователя. Я использую его с таким модулем:
const Joi = require('joi')
// User validation rules
module.exports = {
create: {
body: {
email: Joi.string().email().required(),
password: Joi.string().min(6).max(128).required(),
name: Joi.string().max(128).required()
}
},
update: {
body: {
password: Joi.string().min(6).max(128).required(),
name: Joi.string().max(128).required()
}
}
}
а затем в маршрутизаторе я передаю его как промежуточное ПО:
router.post('/register', validator(create), userController.register)
Для обновления я хочу создать собственный валидатор с таким кодом:
const json = {
"email":"[email protected]",
"password":"someNewPass",
"name":"John Smith",
"activationKey":"123123",
"active":false,
"resetPasswordKey":"123123"
}
const forbiddenFields = ["email", "activationKey", "active", "resetPasswordKey"];
const validate = (json, forbidden) => {
for(let i = 0; i < forbidden.length; i++) {
if(json.hasOwnProperty(forbidden[i])) {
return false;
}
}
return true;
}
const isValid = validate(json, forbiddenFields)
console.log('is json valid? ', isValid)
Я нашел метод расширения в Joi API, но пример настолько запутан, что я не могу создать настраиваемую проверку с моим кодом.