【问题标题】:Joi array validation ignoring nested keys requiredJoi 数组验证忽略需要的嵌套键
【发布时间】:2020-05-04 05:14:30
【问题描述】:

Joi 数组所需的验证不起作用。我有一个数组 userData ,其中包含对象、键 dateMilli 和值。我把required放在任何地方但是如果我传递一个空的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");
}

【问题讨论】:

    标签: javascript node.js express hapijs joi


    【解决方案1】:

    您需要将.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);
    
    

    【讨论】:

    • 你能把它标记为答案供其他人参考吗?
    猜你喜欢
    • 2019-03-23
    • 2015-08-03
    • 1970-01-01
    • 2020-06-04
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2020-06-01
    相关资源
    最近更新 更多