尝试验证一个数组在一种情况下有零个或多个字符串,在另一种情况下有零个或多个对象,在Joi文档中苦苦挣扎:(
validate: {
headers: Joi.object({
'content-type': "application/vnd.api+json",
accept: "application/vnd.api+json"
}).options({ allowUnknown: true }),
payload : Joi.object().keys({
data : Joi.object().keys({
type: Joi.any().allow('BY_TEMPLATE').required(),
attributes: Joi.object({
to : Joi.string().email().required(),
templateId : Joi.string().required(),
categories : Joi.array().items( //trying to validate here that each element is a string),
variables : Joi.array({
//also trying to validate here that each element is an Object with one key and value
})
})
}).required()
})
}发布于 2017-03-08 03:24:37
Joi.array().items()接受对数组元素使用的另一个Joi模式。所以字符串数组很简单:
Joi.array().items(Joi.string())与对象数组相同;只需将对象模式传递给items()
Joi.array().items(Joi.object({
// Object schema
}))发布于 2019-08-30 18:50:22
你可以试试这个:
function(data) {
const Schema = {
categories: Joi.array().items(Joi.string()),
variables: Joi.array().items(Joi.object().keys().min(1))
}
return Joi.validate(data, Schema)
}有关更多详细信息,请查看此存储库:https://github.com/raysk4ever/nodejs
发布于 2020-07-17 14:51:32
如果要验证Joi中的字符串数组:
Joi.array().items(Joi.string().valid("item1", "item2", "item3", "item4"))
https://stackoverflow.com/questions/42656549
复制相似问题