Проверка схемы

#node.js #json-schema-validator #ajv

#node.js #json-schema-validator-проверка схемы #ajv

Вопрос:

Как мы можем проверить правильность написанной схемы или нет.

 const schema = {
  "properties": {
    "foo": { "add": "string" , "minLenfeffgth": 3, "maxLefngth": 255 }
  }
};
  

упомянутая выше схема является допустимой схемой в соответствии с ajv.validateSchema() .

подобно тому, как мы проверяем данные, есть любая функция, которая проверяет схему.

завершите код :

 var Ajv = require('ajv');

var ajv = new Ajv({ allErrors: true});

const schema = {
  "properties": {
    "foo": { "add": "string" , "minLenfeffgth": 3, "maxLefngth": 255 }
  }
};

// console.log(ajv.validateSchema(schema));
var validate = ajv.compile(schema);

test({"foo": ""});

function test(data) {
  var valid = validate(data);
  if (valid) console.log('Valid!');
  else console.log(validate.errors);
}
  

результат: действительный

Ответ №1:

Вы можете настроить Ajv на выдачу ошибок и использовать compile :

 var ajv = new Ajv({
  allErrors: true
});

var schema = {
  type: 'object',
  properties: {
    date: {
      type: 'unexisting-type'
    }
  }
};

try {
  var validate = ajv.compile(schema);
} catch (e) {
  console.log(e.message);
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/6.6.2/ajv.min.js"></script>  

Комментарии:

1. пожалуйста, взгляните: gist.github.com/cmaliwal/8c99e68b8b404596753256b356dc8080

Ответ №2:

упомянутая выше схема является допустимой схемой в соответствии с ajv.validateSchema().

Это допустимо, но ничего не подтвердило, если вы хотите протестировать простой объект с foo обязательным свойством, вы можете сделать что-то вроде этого :

 var ajv = new Ajv({
  allErrors: true
});

var schema = {
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "foo": {
      "type": "string",
      "minLength": 3,
      "maxLength": 255
    }
  },
  "required": [
    "foo"
  ]
};

try {
  var validate = ajv.compile(schema);
  test({"foo": "" });
} catch (e) {
  console.log("Validate error :"   e.message);
}


function test(data) {
  var valid = validate(data);
  if (valid) {
    console.log('Valid!');
  } else {
    console.log(validate.errors);
  }
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/6.6.2/ajv.min.js"></script>  

Запуск с данными = {"foo": "" } возвращает приведенное ниже сообщение об ошибке :

 [
  {
    "keyword": "minLength",
    "dataPath": ".foo",
    "schemaPath": "#/properties/foo/minLength",
    "params": {
      "limit": 3
    },
    "message": "should NOT be shorter than 3 characters"
  }
]
  

Выполнить с данными = {"foo": "abcdef" } верните сообщение ниже :

Допустимо!