Javascript 忽略所需嵌套键的Joi数组验证
Joi阵列需要验证,但无法工作。我有一个数组userData,其中包含对象、键dateMilli和值。我将required放在任何地方,但如果我传递一个空的userData数组[]。它没有抛出任何错误 Joi版本是“@hapi/Joi”:“^16.1.8”,与Joi文档进行斗争,但没有任何效果 userId为“123”,userData为[]Javascript 忽略所需嵌套键的Joi数组验证,javascript,node.js,express,hapijs,joi,Javascript,Node.js,Express,Hapijs,Joi,Joi阵列需要验证,但无法工作。我有一个数组userData,其中包含对象、键dateMilli和值。我将required放在任何地方,但如果我传递一个空的userData数组[]。它没有抛出任何错误 Joi版本是“@hapi/Joi”:“^16.1.8”,与Joi文档进行斗争,但没有任何效果 userId为“123”,userData为[] const data = { userId, userData }; const schema = Joi.object({ userId: Jo
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");
}
您需要对数组使用
.min
,以禁止空数组
试试这个
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);
你能把它标记为答案供其他人参考吗?