#javascript #node.js #multer #joi
#javascript #node.js #мультер #joi
Вопрос:
Попытка проверить тело запроса на регистрацию для помощника, который имеет форму multipart / form-data из-за прикрепленного аватара.
Провел некоторое исследование, и я пришел к этому https://github.com/hapijs/joi/issues/693
но на самом деле не знаю, работает ли это до сих пор
Это мой код в Joi
const Joi = require('joi');
module.exports = {
passwordStandard(req, res, next) {
const schema = {
password: Joi.string().regex(/^[a-zA-Z0-9]{5,32}$/).required()
}
const {
error
} = Joi.validate({
password: req.body.password
}, schema);
if (error) {
const err = error.details[0].message
res.status(400).json({
err,
errmsg: 'Invalid password',
message: '<ul class='error'> '
'<li>password must not contain special characters</li>'
'<li>password must be atmost 5 characters long</li>'
'</ul>'
})
} else {
next()
}
}
}
Я получаю пароль, требующийся с ошибочным запросом 400, и ошибки определены выше.
Ошибка 400, которая должна быть возвращена, поскольку проверка не прошла.
Комментарии:
1. Вы подтвердили, что req.body.password не является неопределенным или нулевым? В чем ошибка сообщения?
2. Поскольку я сделал поле в joi обязательным, здесь появляется ошибка «err»: «требуется пароль», больше похоже, что пароль равен нулю
3. Итак, вы хотите, чтобы joi передавался, когда пароль равен нулю? Если это так, вы можете добавить .allow(null) после вашего .required()
4. Нет, извините, позвольте мне перефразировать, я передаю пароль, но Joi выдает мне ошибку запроса пароля со значением Joi не может получить доступ к форме пароля postman, и поэтому он считает его нулевым, но все остальные поля в порядке.
5. drive.google.com/file/d/1LSs_WZRL8eGAmVIRyNvM6Nw90cxUQAiT/… Это мой запрос со всеми его параметрами