在 Joi 验证中忽略“必需”?

Hol*_*osa 8 javascript validation joi

我正在尝试使用 Joi 来验证 RESTful Web 服务接受的数据模型。

对于创建操作,我想对字段强制执行“必需”验证。但是,对于更新操作,可能会提交部分数据对象,因此我希望忽略“必需”属性。

除了创建两个模式之外,有没有办法实现这一点?

geo*_*per 6

.fork()可以传入您想要的字段数组。

const validate = (credentials, requiredFields = []) => {

  // Schema
  let userSchema = Joi.object({
    username: Joi.string(),
    email: Joi.string().email(),
  })

  // This is where the required fields are set
  userSchema = userSchema.fork(requiredFields, field => field.required())

  return userSchema.validate(credentials)
}

validate(credentials, ['email'])
Run Code Online (Sandbox Code Playgroud)

或者做相反的事情并将它们更改为可选。


vip*_*dha 0

根据条件使用.when()和设置。.required()