我有一个类似以下的架构。我需要的是,当我在地址对象中具有_id字段时,则不应应用adressJoiSchema;当其没有_id字段时,则应应用adressJoiSchema。 但是每次它在adressJoiSchema中触发验证
const schema = joi.object({
name: joi.string().min(3).max(50).required(),
address: joi.
object({ _id: joi.string() }).allow(null),
bankdetails: joi.array().items(bankValidate).optional(),
location: joi.object({
type: joi.string().optional(),
coordinates: joi.array().optional()
}).optional(),
isactive: joi.boolean().default(true)
}).
when(
joi.object({
address: joi.object().keys({
_id: joi.string().exist()
})
}),
{
otherwise: joi.object({
address: joi.object(adressJoiSchema)
})
}
)
const adressJoiSchema = {
userid: joi.objectid(),
villagename: joi.string().min(3).
max(50).required(),
city: joi.string().min(3).max(50),
district: joi.string().min(3).max(50),
state: joi.string().min(3).max(50),
zipcode: joi.number().positive().optional()
}