joi 验证错误“值”必须是一个数组

问题描述

我是 JSON 的新手。我有一个架构提到:

*

const schema = Joi.array().min(3).has({
    Name: Joi.string().required(),Type: Joi.string().required(),Price: Joi.number().required(),});

我的 JSON 就像:

{
    "foods": [
    {
      "Name": "Item1","Type": "Category1","Price": 14
    },{
      "Name": "Item2","Type": "Category2","Price": 8
    },{
      "Name": "Item3","Price": 10
    }
  ]
}

但是当我验证这一点时,我收到以下错误: joi 验证错误“值”必须是一个数组。

请让我知道需要在 JSON 对象中更改哪些内容才能由架构验证。

解决方法

您的架构需要一个最小长度为 3 的数组作为根,但您传递的是一个具有单个属性 foods 的对象,该对象是一个数组。所以你必须摆脱周围的物体。

这将是验证器的有效输入

[
  {
    "Name": "Item1","Type": "Category1","Price": 14
  },{
    "Name": "Item2","Type": "Category2","Price": 8
  },{
    "Name": "Item3","Price": 10
  }
]