Reputation: 1095
Joi array required validation not working. I have an array userData which contain objects, keys dateMilli and value. I put required everywhere But if I pass an empty array of userData []. It is not throwing any error.
Joi Version is "@hapi/joi": "^16.1.8", struggling with Joi docs but nothing works.
userId is "123" and userData is []
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");
}
Upvotes: 1
Views: 1489
Reputation: 7770
You need to use .min
with array to disallow empty arrays.
try this
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);
Upvotes: 3