【发布时间】:2020-06-20 00:19:57
【问题描述】:
我正在构建一个 Express API 并使用 @hapi/joi 进行验证。但是我发现自己处于以下情况:如果我想验证一个新用户,架构中的所有属性都必须是必需的,但是如果客户端想要修改用户,这些属性必须是可选的,因为只有客户端知道什么它将修改的属性。因此,如果我为新用户提供此架构:
function validateUser(user) {
const schema = Joi.object().keys({
name: Joi.string().required(),
lastName: Joi.string().required(),
email: Joi.string().email().required(),
password: Joi.string().required(),
address: Joi.string().required(),
city: Joi.string().required(),
district: Joi.string().required()
});
return schema.validate(user);
}
由于所有属性都是必需的,所以当我想使用具有相同属性但都是可选的模式时,我必须硬编码另一个模式,其中所有属性都是可选的。 Joi 有没有办法或选项来避免冗余代码?就像传递给 validateUser 函数以将其应用于架构的 isNew 参数一样?
【问题讨论】: