我试图学习 JOI 来验证模式,我遇到了以下内容
const schema = Joi.array().items(
Joi.object({
a: Joi.string(),
b: Joi.number()
})
).has(Joi.object({ a: Joi.string().valid('a'), b: Joi.number() }))
我验证了该方案,如下let c = arr2.validate([{ a:'a', b:'b'}])我在验证中得到的响应是
{
value: [ { a: 'a', b: 'b' } ],
error: [Error [ValidationError]: "[0].b" must be a number] {
_original: [ [Object] ],
details: [ [Object] ]
}
}
然后我尝试使用架构进行上述验证,如下所示
const arr2 = Joi.array().items(
Joi.object({
a: Joi.string(),
b: Joi.number()
})
)
即使是现在我也得到了以下验证响应
{
value: [ { a: 'a', b: 'b' } ],
error: [Error [ValidationError]: "[0].b" must be a number] {
_original: [ [Object] ],
details: [ [Object] ]
}
}
我只是对 .has 在第一个模式中的用途感到困惑,因为我可以直接获得有效值,如下所示
const arr2 = Joi.array().items(
Joi.object({
a: Joi.string().valid('a'),
b: Joi.number()
})
)
那么 .has 在第一个模式中的确切用途是什么