Joi schema.validate 一个自定义类型 return 一个未定义的值
Joi schema.validate a custom type return an undefined value
我正在尝试验证带有 JOI 的自定义类型,所有这些都带有转换。
我的 JoiType 的基本类型是 Joi.array()
当我尝试
const schema = Joi.object().keys({
attribute: Joi.array().items(Joi.string())
});
const result = schema.validate(exampleOfArray);
我发现 result.value
包含真实的验证值。
但是当我将类型更改为自定义类型时,没有返回值 : (result.value === undefined
)
这是我的自定义类型:
const customJoi = Joi.extend((joi: Root) => {
return {
type: 'stringArray',
base: joi.array().items(joi.string()).meta({ baseType: 'array' }),
coerce(value: any, helpers: CustomHelpers) {
if (typeof value !== 'string') {
return value;
}
if (!value) {
return [];
}
return value.replace(/^,+|,+$/mg, '').split(',');
}
};
});
const schema = Joi.object().keys({
attribute: customJoi.stringArray().items(Joi.string())
});
我找到了解决方案:
强制函数应该 return :
return { value: value };
而不是:
return value;
我正在尝试验证带有 JOI 的自定义类型,所有这些都带有转换。
我的 JoiType 的基本类型是 Joi.array()
当我尝试
const schema = Joi.object().keys({
attribute: Joi.array().items(Joi.string())
});
const result = schema.validate(exampleOfArray);
我发现 result.value
包含真实的验证值。
但是当我将类型更改为自定义类型时,没有返回值 : (result.value === undefined
)
这是我的自定义类型:
const customJoi = Joi.extend((joi: Root) => {
return {
type: 'stringArray',
base: joi.array().items(joi.string()).meta({ baseType: 'array' }),
coerce(value: any, helpers: CustomHelpers) {
if (typeof value !== 'string') {
return value;
}
if (!value) {
return [];
}
return value.replace(/^,+|,+$/mg, '').split(',');
}
};
});
const schema = Joi.object().keys({
attribute: customJoi.stringArray().items(Joi.string())
});
我找到了解决方案:
强制函数应该 return :
return { value: value };
而不是:
return value;