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

时间:2015-11-03 23:21:46

标签: javascript node.js hapijs joi

我很高兴使用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一起做?

2 个答案:

答案 0 :(得分:13)

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

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

options参数在验证时传递给Joi

答案 1 :(得分:0)

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