NPM酷庫042:ajv,JSON 模式驗證

NPM酷庫,天天兩分鐘,瞭解一個流行NPM庫。·git

在NPM酷庫041中,咱們學習瞭如何用validator庫來驗證字符串是不是Email、URL等,在開發中,除了字符串,咱們還須要對更復雜的數據進行驗證。好比須要Object知足那些屬性,每一個屬性都是什麼類型的,這些條件稱之爲數據模式驗證。github

在對數據的模式驗證領域有專門的標準,叫作 JSON Schema。就是按照JSON Schema標準聲明一個模式對象,而後使用模式驗證工具去驗證目標數據。json

ajv

ajv 是一個很是流行的JSON Schema驗證工具,而且擁有很是出衆的性能表現。下方的例子中,咱們使用ajv來驗證用戶輸入的表單數據是否合法。工具

const Ajv = require('ajv');

let schema = {
  type: 'object',
  required: ['username', 'email', 'password'],
  properties: {
    username: {
      type: 'string',
      minLength: 4
    },
    email: {
      type: 'string',
      format: 'email'
    },
    password: {
      type: 'string',
      minLength: 6
    },
    age: {
      type: 'integer',
      minimum: 0
    },
    sex: {
      enum: ['boy', 'girl', 'secret'],
      default: 'secret'
    },
  }
};

let ajv = new Ajv();
let validate = ajv.compile(schema);

let valid = validate(data);
if (!valid) console.log(validate.errors);

在上述代碼中,咱們聲明瞭一個數據模式schema ,這個模式要求目標數據爲一個對象,對象能夠有五個字段 usernameemailpasswordagesex,並分別定義了五個字段的類型和數據格式要求,而且其中 usernameemailpassword 必填。而後咱們使用這個模式去驗證用戶輸入的數據 data 是否知足咱們的需求。性能

注意:學習

  • JSON Schema 是一個聲明模式描述對象的標準,並不是一個庫
  • ajv 是一個JSON Schema標準驗證器的實現,除了ajv還有不少其餘的庫
  • 代碼中的 schema 是使用 JSON Schema 生成的模式描述對象
  • 代碼中 data 是咱們要進行檢查的數據

參考資料

JSON Schema http://json-schema.orgui

AJV https://github.com/epoberezki...code

相關文章
相關標籤/搜索