简体   繁体   English

Joi 数组验证忽略所需的嵌套键

[英]Joi array validation ignoring nested keys required

Joi array required validation not working. Joi 数组需要验证不起作用。 I have an array userData which contain objects, keys dateMilli and value.我有一个包含对象、键 dateMilli 和值的数组 userData。 I put required everywhere But if I pass an empty array of userData [].我把 required 无处不在但是如果我传递一个空的 userData [] 数组。 It is not throwing any error.它没有抛出任何错误。

Joi Version is "@hapi/joi": "^16.1.8" , struggling with Joi docs but nothing works. Joi 版本是"@hapi/joi": "^16.1.8" ,与 Joi 文档苦苦挣扎,但没有任何效果。

userId is "123" and userData is [] 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");
}

You need to use .min with array to disallow empty arrays.您需要将.min与数组一起使用以禁止空数组。

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM