Joi数组所需的验证无效。我有一个数组userData,其中包含对象,键dateMilli和值。我在所有地方都放置了require,但是如果我传递了一个空数组的userData []。它没有引发任何错误。
Joi版本为“ @ hapi / joi”:“ ^ 16.1.8” ,与Joi文档不尽相同,但无济于事。
userId为“ 123”,userData为[]
const data = { userId, userData };
const schema = Joi.object({
userId: Joi.string().required(),
userData: Joi.array().items({
dateMilli: Joi.number().required(),
value: Joi.string().valid("YES", "NO").required()
}).required(),
});
let validate = schema.validate(data);
if (!validate || validate.hasOwnProperty("error")) {
return res.send("Invalid parameters");
}
答案 0 :(得分:1)
您需要将.min
与array配合使用以禁止使用空数组。
尝试
const data = {"userId": "123", "userData": []};
const Joi = require("@hapi/joi");
const schema = Joi.object({
"userId": Joi.string().required(),
"userData": Joi.array().items({
"dateMilli": Joi.number().required(),
"value": Joi.string().valid("YES", "NO").required()
}).min(1).required()
});
const validate = schema.validate(data);
console.log(validate);