12

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

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

有没有办法用 Joi 做到这一点?

4

2 回答 2

30

您可以设置allowUnknowntrueoptions

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

options参数在验证时传递给Joi

于 2015-11-04T02:28:26.907 回答
4

对于当前版本的 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

于 2019-07-22T14:44:03.807 回答