Мне нужно использовать библиотеку проверки Joi для проверки входных данных API и отправки данных.
Я сказал, что создал схему следующим образом:
import Joi from '@hapi/joi'
const eventSchema = Joi.object({
title: Joi.string()
.min(7)
.max(50)
.required()
.error(() => Error('Event title has to be least 7 and max 50 characters.')),
description: Joi.string()
.min(10)
.max(400)
.required()
.error(() => Error('Event description has to be least 10 and max 400 characters.')),
place: Joi.string()
.min(6)
.max(40)
.required()
.error(() => Error('Event place has to be least 6 and max 40 characters.'))
})
export default eventSchema
Когда я проверяю это Я получаю ошибку проверки, как и ожидалось. Проблема в том, что я не знаю, какое поле действительно вызвало ошибку. Я хотел знать это, потому что я хочу точно показать ошибку рядом с тем полем, которое вызвало ошибку, а не просто общее сообщение проверки c, отображаемое в верхней части формы.
const isValid = eventSchema.validate()
if (isValid.error) {
const fieldNameWhichCauseError = ???
return {
errors: { [fieldNameWhichCauseError]: isValid.error.message }
}
}
// Everything looks good save to db
// ...etc.
Приведенный выше код имеет Теперь способ узнать имя поля в fieldNameWhichCauseError = ??? . Может кто-нибудь, пожалуйста, помогите мне? Я не видел, чтобы кто-нибудь делал такой сценарий. Я также не нашел в документах. У меня так много схем и проверок на месте, и это действительно мешает мне показывать ошибку в нужном месте пользовательского интерфейса.