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

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

除了创建两个模式之外,还有其他方法可以实现此目的吗?

最佳答案

您可以通过使用optionalKeys扩展第一个模式来避免这两种模式。

const createSchema = Joi.object().keys({
  name: Joi.string().required(),
  birthday: Joi.date().required(),
});

const updateSchema = createSchema.optionalKeys("name", "birthday");

Joi.validate({name: "doesn't work"}, createSchema); // error: birthday field missing
Joi.validate({name: "it works"}, updateSchema); // all good

关于javascript - 在Joi验证中忽略 “required”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30383588/

10-12 23:32