使用ajv-keywords給json schema添加自定義關鍵字

JSON Schema的關鍵字太少,有些默認的校驗無法滿足效果,需要自定義校驗關鍵字,ajv-errors提供一些常見的validator關鍵字

用法

var Ajv = require('ajv');
var ajv = new Ajv({$data:true});
//添加所有的關鍵字
require('ajv-keywords')(ajv);
//只添加instanceof關鍵字
require('ajv-keywords')(ajv, 'instanceof');
//添加多個關鍵字
require('ajv-keywords')(ajv, ['typeof', 'instanceof']);
//只添加instanceof關鍵字,其他代碼不添加(類似按需加載)
require('ajv-keywords/keywords/instanceof')(ajv);

關鍵字

  1. typeof

    基於js的typeof實現

  2. instaceof

    基於js的instaceof實現

number

string

  • regexp

    • 支持標準pattern不支持的標誌

    • 此關鍵字僅適用於字符串。如果數據不是字符串,則驗證成功

  • formatmaximum、formatminimum、formatexclusivemaximum、formatexclusiveminimum

    校驗format:datetime、time、date類型 的範圍

  • transform

    Json schema是嚴格校驗的,所以字符串中的空格也會影響校驗結果

    transform可以在校驗前改變字符串

    • trim: remove whitespace from start and end
    • trimLeft: remove whitespace from start
    • trimRight: remove whitespace from end
    • toLowerCase: case string to all lower case
    • toUpperCase: case string to all upper case
    • toEnumCase: case string to match case in schema

arrays

objects

computer keywords

All types

  • dynamicDefaults

    設置默認值,並且可以擴展自定義函數。類似uuid等

參考

  1. ajv-keywords readme
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章