NPM酷庫,每天兩分鐘,瞭解一個流行NPM庫。·
在NPM酷庫042中,我們瞭解到了JSON Schema資料模式驗證,以及ajv庫。今天我們來學習另一個物件資料驗證的庫joi。
joi
joi 是語義化的物件資料模式驗證庫,所謂語義化,是指其方法名能夠明確表達其含義。
const Joi = require(`joi`);
// 宣告模式
const schema = Joi.object().keys({
username: Joi.string().alphanum().min(3).max(30).required(),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
access_token: [Joi.string(), Joi.number()],
birthyear: Joi.number().integer().min(1900).max(2013),
email: Joi.string().email()
}).with(`username`, `birthyear`).without(`password`, `access_token`);
// 驗證
const result = Joi.validate({ username: `abc`, birthyear: 1994 }, schema);
// result.error === null -> valid
注意:joi並非是JSON Schema標準的實現,另外,使用ajv驗證JSON Schema可以將模式配置資訊儲存在.json
檔案中,因為JSON Schema模式是宣告式的,而joi則必須在程式碼檔案中實現模式配置,因為joi的語義化必須以函式呼叫來實現。