Я пытаюсь применить проверку с 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?
Спасибо,
Бен