最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何为以下数据编写模式验证?

网站源码admin33浏览0评论

如何为以下数据编写模式验证?

如何为以下数据编写模式验证?

我一直在尝试使用 Joi 数据验证器为以下输入数据编写模式验证。

{
  "submissionReason": "new TPV required",
  "alignerInfo": {
    "name": "UPPER",
    "value": [
      {
        "name": "set",
        "value": "18/20"
      },
      {
        "name": "zenStage",
        "value": "2"
      }
    ]
  },
  "archesToTreat": "BOTH",
  "refinementGoals": [
    {
      "name": "Alignment"
    },
    {
      "name": "Close Residual Space",
      "value": [
        {
          "position": [
            "2.1",
            "2.2"
          ],
          "value": "0.5"
        },
        {
          "position": [
            "2.4",
            "2.5"
          ],
          "value": "0.7"
        }
      ]
    },
    {
      "name": "Resolve posterior Open Bite",
      "value": [
        {
          "name": "Attachments Only",
          "value": {
            "name": "teeth Attachment",
            "value": [
              "2.1",
              "2.2"
            ]
          }
        },
        {
          "name": "Add Button for elastic",
          "value": [
            "2.1",
            "2.2"
          ]
        }
      ]
    }
  ],
  "attachments": "keep all previous attachment and change",
  "iprInfo": {
    "name": "ipr not performed as prescibed",
    "value": [
      {
        "position": [
          "2.1",
          "2.2"
        ],
        "value": "0.5"
      }
    ]
  },
  "specialNotes": "Doctor Notes"
}

这就是我到目前为止所写的

Joi.object({
  submissionReason: Joi.string().required(),
  alignerInfo: Joi.object({
    name: Joi.string().required(),
    value: Joi.array().items(Joi.object({
      name: Joi.string().required(),
      value: Joi.string().required(),
    })).required()
  }).required(),
  archesToTreat: Joi.string().valid('UPPER', 'LOWER', 'BOTH').required(),
  refinementGoals: Joi.array().items(Joi.object({
    name: Joi.string().required(),
    value: Joi.array().items(Joi.object({
      position: Joi.array().items(Joi.string().required()).required(),
      value: Joi.string().required(),
      name: Joi.string().forbidden()
    })).when('name', {
      is: 'Close Residual Space',
      then: Joi.required(),
      otherwise: Joi.forbidden()
    })
  })).required(),
  attachments: Joi.string().required(),
  iprInfo: Joi.object({
    name: Joi.string().required(),
    value: Joi.array().items(Joi.object({
      position: Joi.array().items(Joi.string().required()).required(),
      value: Joi.string().required()
    })).required()
  }).required(),
  specialNotes: Joi.string().required()
})

但这不起作用,我收到以下错误,

验证错误:不允许“refinementGoals[2].value”

请帮我正确验证

回答如下:

您可以使用 express-validator,它提供适合您用例的基于模式的验证。

这里是 express-validator 模式方法的链接。 https://express-validator.github.io/docs/api/check-schema

发布评论

评论列表(0)

  1. 暂无评论