【问题标题】:Allow optional parameters in Joi without specifying them允许在 Joi 中使用可选参数而不指定它们
【发布时间】:2016-02-04 07:19:30
【问题描述】:

我对使用 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 做到这一点?

【问题讨论】:

    标签: javascript node.js hapijs joi


    【解决方案1】:

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

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

    options 参数在验证时传递给Joi。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 2020-02-19
        • 2018-01-12
        • 2017-05-19
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多