首页 > 解决方案 > 当值无效时,Joi 使用默认值

问题描述

我正在尝试使用 Joi 验证一些数据。但是,当提供的值无效时,我想使用默认值。我当前的验证如下所示:

field: Joi.string()
    .optional()
    .valid('a', 'b', 'c', 'd')
    .default('a', { invalid: true }),

因此,当我得到例如y时,会发生验证错误并且不使用默认值。任何帮助都会得到帮助

标签: javascriptnode.jsjoi

解决方案


您可以使用 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.0any.failover(value)上的可用版本(尚未发布)来实现这一点。


推荐阅读