小编Yob*_*Yob的帖子

Joi 验证 - 允许字段是可选的,但提供时必须是正整数

我在 JOI 模式中有一个字段,我希望该字段是可选的(即接受未定义,也接受 null),但是如果提供了它的值,则它必须是正整数。我该如何实现这一目标?

这是我到目前为止所尝试过的,验证字段是“容量”,但它似乎不起作用,似乎“.when”语句被忽略了:

const divebarSchema = joi.object({
  divebar: joi
    .object({
      title: joi.string().required(),
      capacity: joi.optional().allow(null),
      description: joi.string().required(),
      location: joi.string().required(),
      image: joi.string().optional().allow(""),
      map: joi.string().optional().allow(""),
    })
    .required()
    .when(joi.object({ capacity: joi.exist() }), {
      then: joi.object({ capacity: joi.number().integer().min(0) }),
    }),
});
Run Code Online (Sandbox Code Playgroud)

在上面之前,我最初没有 .when ,而是容量规则是:

  capacity: joi.number().optional().allow(null).integer().min(0),
Run Code Online (Sandbox Code Playgroud)

然而,这也不起作用,它在提交空值时不断抛出错误“必须是数字”。

javascript validation node.js express joi

5
推荐指数
1
解决办法
8533
查看次数

标签 统计

express ×1

javascript ×1

joi ×1

node.js ×1

validation ×1