Joi 在值无效时使用默认值
Joi use default when value is invalid
我正在尝试使用 Joi 验证一些数据。但是,我想在提供的值无效时使用默认值。我当前的验证如下所示:
field: Joi.string()
.optional()
.valid('a', 'b', 'c', 'd')
.default('a', { invalid: true }),
因此,当我得到例如 y 时,发生验证错误并且未使用默认值。任何帮助都适用
您可以使用alternatives.try(schemas)
通过使用此架构来实现您想要的:
const schema = Joi.object().keys({
field: Joi.alternatives().try([
Joi.string().valid('a', 'b', 'c', 'd'),
Joi.empty(Joi.any())
]).default('a')
})
您还可以通过 joi 16.0.0(尚未发布)上的 any.failover(value)
实现此目的。
替代@soltex 回答:
default
仅在未设置该值时有效。所以你可以使用empty
来取消设置值。(基本上我就是这样,不知道负分):
const schema = Joi.object().keys({
field: Joi.string().empty(Joi.not(['a', 'b', 'c', 'd'])).default('a')
})
我正在尝试使用 Joi 验证一些数据。但是,我想在提供的值无效时使用默认值。我当前的验证如下所示:
field: Joi.string()
.optional()
.valid('a', 'b', 'c', 'd')
.default('a', { invalid: true }),
因此,当我得到例如 y 时,发生验证错误并且未使用默认值。任何帮助都适用
您可以使用alternatives.try(schemas)
通过使用此架构来实现您想要的:
const schema = Joi.object().keys({
field: Joi.alternatives().try([
Joi.string().valid('a', 'b', 'c', 'd'),
Joi.empty(Joi.any())
]).default('a')
})
您还可以通过 joi 16.0.0(尚未发布)上的 any.failover(value)
实现此目的。
替代@soltex 回答:
default
仅在未设置该值时有效。所以你可以使用empty
来取消设置值。(基本上我就是这样,不知道负分):
const schema = Joi.object().keys({
field: Joi.string().empty(Joi.not(['a', 'b', 'c', 'd'])).default('a')
})