Разрешить необязательные параметры в Joi без указания их

Я довольно плохо знаком с использованием Joi для проверки полезных нагрузок в хапи. Мой вопрос заключается в следующем. У меня есть этот определенный маршрут:

{
    method: 'POST',
    path: '/foo/bar',
    config: {
      description: 'foo.bar',
      handler: handlers.foo,
      auth:false,
      tags: ['api'],
      validate: {
        payload: {
          email : Joi.string().required(),
          password : Joi.string().required(),
        }
      }
    }
}

Адрес электронной почты и пароль - мои обязательные свойства. Тем не менее, я хотел бы разрешить другие свойства без необходимости указывать их все. например:

{
  email: foo@bar.com,
  password: fooPass,
  name: myName,
  surname: mySurname
}

Есть ли способ сделать это с Джой?

1 ответ

Решение

Вы можете установить allowUnknown в true в options:

validate: {
  payload: {
    email : Joi.string().required(),
    password : Joi.string().required(),
  },
  options: {
    allowUnknown: true
  }
}

options параметр передается Joi при проверке.

Для текущей версии Joi (v15.1.0) при выполнении

Joi.validate(value, schema, options)

задавать allowUnknown: true

в options объект.

Ссылка:

https://github.com/hapijs/joi/blob/v15.1.0/API.md

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