Проверить схему - PullRequest
       20

Проверить схему

0 голосов
/ 06 марта 2019

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

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

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

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

вышеупомянутая схема является допустимой схемой в соответствии с 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" } вернуть сообщениениже:

Действительный!

0 голосов
/ 06 марта 2019

Вы можете настроить 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>
...