Проверка с Джои в Ax ios вызов не дает правильный ответ - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь применить проверку с Joi на NodeJS сервере, и мой интерфейс Vue. Это моя функция проверки бэкэнда (в AuthenticationPolicy):

    register(req, res, next) {
        const schema = Joi.object({
            email: Joi.string().email(),
            password: Joi.string().required()
        })
        const result = schema.validate(req.body)
        if (result.error) {
            console.log(`There was an error: ${JSON.stringify(result.error.details)}`)
            res.status(400).send(JSON.stringify(result.error.details))
        }
        else {
            next()
        }
    }

Это указатель для регистрации:

var authenticationPolicy = require('./policies/AuthenticationPolicy')
router.post('/register', authenticationPolicy.register, (req, res, next) => {
    console.log(`Entered registration on server after validation`)
    res.send(`Registered! ${req.body.email}`)
})

Когда я пытаюсь ввести недействительный Email, сервер регистрирует:

There was an error: [{"message":"\"email\" must be a valid email","path":["email"],"type":"string.email","context":{"value":"Mailmailmail","key":"email","label":"email"}}]
POST /register 400 43.382 ms - 151

Это релевантная часть во внешнем интерфейсе: Сервис:

    register(credentials) {
        return Api().post('/register', credentials) //Api is the axios created to my baseURL
    }

Метод в компоненте:

            async register() {
                try {
                    this.error = null;
                    await AuthenticationService.register({
                        email: this.email,
                        password: this.password

                    })

                }
                catch (err) {

                    console.log(`${err.message}`)
                    this.error = err.message
                }
            }

Когда я запускаю это с недействительным адресом электронной почты (почта) браузер регистрирует Request failed with status code 400. Почему err.message, который я регистрирую в интерфейсе, не совпадает с ответом, полученным от интерфейса? Если я правильно понимаю, Топор ios отклонил обещание из-за статуса 400, поэтому оно было брошено, но куда же тело go?

Спасибо,

Бен

1 Ответ

0 голосов
/ 23 апреля 2020

Итак, после многих часов отладки и игры, я понял, что объект err, который я ловлю, - это объект, структуру которого я не знал. В частности, он имеет компонент ответа. err.response.data получил меня, что я хочу. Я все еще хотел бы знать, есть ли у кого-нибудь идеи, как я могу найти что-то подобное, я не видел ничего, что указывало бы мне в этом направлении в документации, и я предполагаю, что регистрация не соответствовала моим ожиданиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...