Joi验证不支持修改现有对象键。
我正在对父类和子类使用Joi验证。父级的验证是所有子级的基本验证,但每个子级都有特定的限制或附加字段。我希望能够只使用我的父Joi对象,并且能够修改现有的键以满足特定的限制。
//Declare base class with an array at most 10 elements
const parent = {
myArray: Joi.array().max(10)
}
//Now declare child with minimum 1 array value
const child = parent.append({
foo: Joi.string(),
myArray: Joi.array().min(1).required()
})
上面的代码按预期工作-这意味着子对象不会保留应用于父对象的.limit(10)限制。但是,我希望它能做到这一点。我确信append在这里不是正确的函数,但我不确定如何做到这一点。我希望得到的子验证看起来像这样:
const child = {
foo: Joi.string(),
myArray: Joi.array().max(10).min(1).required()
}
发布于 2019-01-30 12:53:34
您是否尝试过:
const child = parent.append({
foo: Joi.string(),
myArray: parent.myArray.min(1).required()
});
刚刚尝试过:
const Joi = require('joi');
const parent = {
x: Joi.array().max(10).required()
};
const child = Object.assign({}, parent, {
x: parent.x.min(1).required(),
y: Joi.string()
});
Joi.validate({
x: [],
y: 'abc'
}, child); // fails as .min(1) not satisfied
Joi.validate({
x: [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
y: 'abc'
}, child); // fails as .max(10) not satisfied
Joi.validate({
x: [1],
y: 'abc'
}, child); // OK
已在Nodev8.10.0上尝试使用新的npm i joi
(软件包显示:"joi": "^14.3.1"
)。或者,也许你给出的例子太琐碎,不能反映你的真实场景?
https://stackoverflow.com/questions/54437782
复制相似问题