Пользовательская ошибка Joi для каждой опции проверки

Я имею Joi Схема и хотите указать пользовательское сообщение об ошибке для каждого из параметров.

Пример моей схемы:

const schema = Joi.object().keys({
    name: Joi.string()
      .min(5).error(() => 'first message')
      .max(25).error(() => 'second message')
      .required().error(() => 'third message')
)}

На данный момент эта проверка работает следующим образом: если какая-либо из опций недействительна, появляется только третье сообщение.

Ожидаемое поведение - появляется сообщение об ошибке в зависимости от того, какая опция недопустима (как поведение Joi по умолчанию, но с моим собственным сообщением об ошибке).

Спасибо с уважением!

0 ответов

const schema = Joi.object().keys({
title: Joi.string()
  .min(5)
  .max(25)
  .required()
  .messages({
  "string.min": "first msg",
  "string.max": "second msg",
  "any.empty":"third msg"
      })
  })

Это лучший способ показать настраиваемые сообщения об ошибках

Для моей ситуации я просто нашел такое решение:

const schema = Joi.object().keys({
    title: Joi.string()
      .min(5)
      .max(25)
      .required()
      .error((errors) => {
        return errors.map(error => {
          switch (error.type) {
            case "string.min":
              return { message: "first msg" };
            case "string.max":
              return { message: "second msg" };
            case "any.empty":
              return { message: "third msg" };
          }
        }
        )
      })

Кажется, не самый лучший, так как он вызывает слишком много кода, особенно если у вас большая форма, но это работает, как я хочу.

Другие вопросы по тегам