Как заставить joi выводить все ошибки с путем после проверки схемы json? - PullRequest
0 голосов
/ 29 апреля 2019

Рассмотрим код:

const Joi = require('joi');
const joiAssert = require('joi-assert');

let json = {
  "myObject": {
    "myNestedField": {
      "deepOne": "myValue"
    }
  },
  "myArray": [
    {"field": 1},
    {"field": 2},
    {"field": 3}
  ]
};

joiAssert(json, Joi.object().required().keys({
  myObject: Joi.object().required().keys({
    myNestedField: Joi.object().required().keys({
      deepOne: Joi.string().required().valid("valid")
    }),
    myArray: Joi.array().items(
      Joi.object().keys({
        field: Joi.number().required().valid(8)
      })
    )
  })
}));

Не удается с:

AssertionError: object: "deepOne" must be one of [valid]
    at Object.<anonymous> (joi-assert.js:17:1)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)    

Есть ли способ сделать что-то вроде?

myObject.myNestedField.deepOne -  must be one of [valid]
myArray does not contain value [8] 

например. вывести все ошибки проверки с соответствующими путями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...