Joi - 如何检查其他键的值何时为 null/empty

Joi - how to check when other key's value is null/empty

我在尝试验证 JSON 文件时遇到问题,更具体地说,我在 when 条件下遇到问题。

我有一个 a 密钥,它必须是过去的日期,但不是必需的。然后我有一个 b 键,它应该是 url 和 if a 是null/empty, b 可以为空,否则必填.

我会在下面留下我的代码以使其清楚,但现在如果 b 为空但 a[= 我不会收到任何错误28=] 不是。

a: Joi.date().less("now").raw().optional().allow(null, ""),
b: Joi.string()
  .uri({ scheme: [/https?/] })
  .when("a", {
    is: Joi.any().empty(),
    then: Joi.optional().allow(null, ""),
    otherwise: Joi.required(),
  }),

找到解决办法了,我的条件不对。

而不是使用 是: Joi.any().empty() 我把 是: Joi.any().valid( null, "") 并且有效。

所以解决方案是这样的:

a: Joi.date().less("now").raw().optional().allow(null, ""),
b: Joi.string()
  .uri({ scheme: [/https?/] })
  .when("a", {
    is: Joi.any().valid(null, ""),
    then: Joi.optional().allow(null, ""),
    otherwise: Joi.required(),
  }),