NPM酷庫,每天兩分鐘,瞭解一個流行NPM庫。·
在NPM酷庫041中,我們學習瞭如何用validator庫來驗證字串是否是Email、URL等,在開發中,除了字串,我們還需要對更復雜的資料進行驗證。比如需要Object滿足那些屬性,每個屬性都是什麼型別的,這些條件稱之為資料模式驗證。
在對資料的模式驗證領域有專門的標準,叫做 JSON Schema。就是按照JSON Schema標準宣告一個模式物件,然後使用模式驗證工具去驗證目標資料。
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
,這個模式要求目標資料為一個物件,物件可以有五個欄位 username
、email
、password
、age
、sex
,並分別定義了五個欄位的型別和資料格式要求,並且其中 username
、email
、password
必填。然後我們使用這個模式去驗證使用者輸入的資料 data
是否滿足我們的需求。
注意:
- JSON Schema 是一個宣告模式描述物件的標準,並非一個庫
- ajv 是一個JSON Schema標準驗證器的實現,除了ajv還有很多其他的庫
- 程式碼中的
schema
是使用 JSON Schema 生成的模式描述物件 - 程式碼中
data
是我們要進行檢查的資料
參考資料
JSON Schema http://json-schema.org