Javascript 如何比较joi中的两个字段?
我尝试在两个字段之间进行验证<代码>foo和Javascript 如何比较joi中的两个字段?,javascript,joi,Javascript,Joi,我尝试在两个字段之间进行验证foo和栏 两者都应该是字符串,但它们是可选的。如果它们有一些值,则最小值应为2,最大值应为10 如果两者都为空(“/null/undefined),则验证应失败并返回错误 我试着和你一起做 .when("bar", { is: (v) => !!v, then: Joi.string().required() }), 但不起作用错误返回未定义 你知道怎么解决吗 这是您需要如何配置才能实现的 empty(['',null]),将''和nu
栏
.when("bar", { is: (v) => !!v, then: Joi.string().required() }),
但不起作用错误
返回未定义
你知道怎么解决吗
这是您需要如何配置才能实现的
empty(['',null])
,将''
和null
视为未定义的
或(“foo”、“bar”)
,使其中一个是必需的const schema=Joi.object({
foo:Joi.string().empty(['',null]).min(2).max(10),
条形图:Joi.string().empty(['',null]).min(2).max(10)
})。或(“foo”、“bar”)代码>您是否尝试了以下解决方案?
const Joi = require("joi");
console.clear();
const schema = Joi.object({
foo: Joi.string()
.allow("", null)
.optional()
.min(2)
.max(10)
.when("bar", {
is: (v) => !!v,
then: Joi.string().required()
}),
bar: Joi.string().allow("", null).optional().min(2).max(10)
});
const { error } = schema.validate(
{ foo: null, bar: null },
{ allowUnknown: true, abortEarly: false }
);
const { error: error2 } = schema.validate(
{ foo: null, bar: "text" },
{ allowUnknown: true, abortEarly: false }
);
console.log({ error }); // should be with error.
console.log({ error2 }); // should be undefiend.
if (error) {
const { details } = error;
console.log({ details });
}
if (error2) {
const { details } = error2;
console.log({ details });
}