Проверка массива Joi без учета вложенных ключей - PullRequest
0 голосов
/ 17 января 2020

Требуется проверка массива Joi. У меня есть массив userData, который содержит объекты, ключи dateMilli и значение. Я поставил везде обязательно, но если я пропущу пустой массив userData []. Он не выдает никакой ошибки.

Версия Joi "@ hapi / joi": "^ 16.1.8" , борется с Joi Docs, но ничего не работает.

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

1 Ответ

1 голос
/ 17 января 2020

Вам нужно использовать .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);

...