我正在尝试为我的Node服务之一验证包装器。 JSON对象具有一个Dictionary,该Dictionary的键没有标准值,并且该值是一个或多个字符串的数组。这是我的JSON对象的示例?
{
"IncomingId" : "Id1",
"LoginId": "Id2",
"FirstName" : "Name1",
"MiddleName" : "Name2",
"LastName" : "Name3",
"Questions" : {
"Who are you?" : [
"I am me."
]
}
}
IncomingId 是必需的,而他们需要提供:
名/中间名/姓氏字段,或者
只能自己提供 LoginId 字段。
问题字段也是必填字段。不确定如何对这些字段执行“或”操作,还请检查“字典”是否与正确的字段匹配。这是我到目前为止所写的,但没有用:
securityChallenge: {
body: {
IncomingId: Joi.string().required(),
LoginId: Joi.string(),
FirstName: Joi.string(),
MiddleName: Joi.string(),
LastName: Joi.string(),
Questions: Joi.object({
arg: Joi.string().min(1).required(),
value: Joi.array().items(Joi.string()).min(1).required()
}).required()
}
}
答案 0 :(得分:0)
尝试一下:
com.sun.faces.enableDistributable
对于const baseSchema = Joi.object({
IncomingId: Joi.string().required(),
Questions: Joi.object().pattern(/^/, Joi.array().items(Joi.string()).min(1)).required().min(1),
})
const schema = Joi.alternatives().try(
baseSchema.keys({
LoginId: Joi.string().required()
}),
baseSchema.keys({
FirstName: Joi.string().required(),
MiddleName: Joi.string(),
LastName: Joi.string().required(),
}),
)
键,您正在寻找Questions
(请参阅https://github.com/hapijs/joi/blob/master/API.md#objectpatternpattern-schema)。
要指定LoginId或名字/中间名/姓氏,可以使用.pattern(...)
(请参阅https://github.com/hapijs/joi/blob/master/API.md#alternatives---inherits-from-any)