const Joi = require('@hapi/joi')
var schema_1 = Joi.object({
a: Joi.number().integer(),
b: Joi.number().integer()
}).when(Joi.object({
'a': Joi.number().valid(5),
'b': Joi.number().valid(10),
}), {then: Joi.any().forbidden()})
var schema_2 = Joi.object({
a: Joi.number().integer(),
b: Joi.number().integer()
}).when(Joi.object({
'a': Joi.number().valid(5),
}), {then: Joi.any().forbidden()})
var object = {
a: 5,
b: 10
}
schema_1.validate(object) // this throws ValidationError
schema_2.validate(object) // this does not throw any error
I was expeting error in schema_2
also
Why schema_2
is not showing any error?
Do not forget to add b
as well in the schema_2
.
const Joi = require('@hapi/joi')
var schema_1 = Joi.object({
a: Joi.number().integer(),
b: Joi.number().integer()
}).when(Joi.object({
'a': Joi.number().valid(5),
'b': Joi.number().valid(10),
}), {then: Joi.any().forbidden()})
var schema_2 = Joi.object({
a: Joi.number().integer(),
b: Joi.number().integer()
}).when(Joi.object({
'a': Joi.number().valid(5),
'b': Joi.any(),
}), {then: Joi.any().forbidden()})
var object = {
a: 5,
b: 10
}
schema_1.validate(object) // this throws ValidationError
schema_2.validate(object) // this does not throw any error
Here is the result.
const x = schema_1.validate(object) // this throws ValidationError
const y = schema_2.validate(object) // this does not throw any error
console.log(x)
console.log(y)
{ value: { a: 5, b: 10 },
error:
{ ValidationError: "value" is not allowed _original: { a: 5, b: 10 }, details: [ [Object] ] } }
{ value: { a: 5, b: 10 },
error:
{ ValidationError: "value" is not allowed _original: { a: 5, b: 10 }, details: [ [Object] ] } }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.