允许在 Joi 中指定可选参数而不指定它们

Allow optional parameters in Joi without specifying them

本文关键字:参数 Joi      更新时间:2023-09-26

我对使用 Joi 在 happy 中验证请求有效负载相当陌生。我的问题如下。我有这个定义的路线:

{
    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
}

有没有办法和乔伊一起做?

您可以在options中将allowUnknown设置为true

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#validatevalue-schema-options-callback