Мне нужна помощь относительно того, как проверять определенные поля вложенного объекта json, используя валидацию JOI.В моем примере у меня есть объект, который содержит два подобъекта, т.е. clientObj
и agentObj
.Меня интересует только проверка поля username
, которое является обязательным, но я не хочу проверять остальные поля.Если я упомяну только это поле, удалив все остальные поля в моей схеме и функции joi.validate()
, я получу 422 ошибку.Код указан ниже:
exports.callAuthentication = function (req, res, next) {
let connectSchema = {
clientObj: joi.object().keys({
name: joi.string().min(3).max(38),
email: joi.string().min(3).max(38),
language: joi.string().min(3).max(38),
username: joi.string().min(3).max(38).required(),
mobile_no: joi.string().min(3).max(38),
time_zone: joi.string().min(3).max(38),
system_phone: joi.string().optional().allow('').min(3).max(38),
phone_no_info: joi.any().optional().allow(''),
voicemail_pin: joi.string().min(3).max(38),
display_picture: joi.string().min(3).max(38),
external_extension: joi.string().min(3).max(38)
}),
agentObj: joi.object().keys({
userId: joi.number(),
username: joi.string().min(3).max(38).required(),
name: joi.string().min(3).max(38),
email: joi.string().min(3).max(38),
status: joi.string().min(3).max(38),
role: joi.string().min(3).max(38)
})
};
const data = req.body;
joi.validate(data, connectSchema, (err) => {
if (err) {
// send a 422 error response if validation fails
res.status(422).json({
status: 'error',
message: err.details[0].message
});
} else {
req.body = data;
next();
}
});
}