我希望以下内容能够输出错误:
var joi = require('joi');
var schema = {
role_type: joi.string(),
info: {
address: joi.object({
postal_code: joi.string(),
country: joi.string().uppercase().length(2)
})
.when('role_type', {
is: 'org', // When role_type is "org" the address props become required
then: {
postal_code: joi.required(),
country: joi.required()
}
})
}
};
var data = {
role_type: 'org',
info: {address: {country: 'AF'}}
};
joi.assert(data, schema);
不幸的是,上面的代码没有产生任何错误。为什么呢?
在joi v6和最新的v10上进行了测试。
答案 0 :(得分:0)
结果显示一个can't reference父对象数据:
引用不能指向对象树,只能指向兄弟键,但它们可以指向它们的兄弟姐妹'儿童
最简单的解决方法是将.when()
向上移动一级,以便joi(深度)合并两个info
子模式
var schema = {
role_type: joi.string(),
info: joi.object({
address: joi.object({
postal_code: joi.string(),
country: joi.string().uppercase().length(2)
})
})
.when('role_type', {
is: 'org',
then: joi.object({
address: joi.object({
postal_code: joi.required(),
country: joi.required()
})
})
})
};