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(),
}),
我在尝试验证 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(),
}),