Проверка не работает с составным / телом данных формы

#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/… Это мой запрос со всеми его параметрами