JSON-Schema 最科學的表單驗證模式


相關傳送門:

# JSON schema與表單驗證
https://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=2651226711&idx=1&sn=d4c8bf6102aae48b033332ceb9dfe0df&chksm=bd495bd38a3ed2c55bc9bda42da04d1ca3cc6bf8b3af36a343984a8281e9b955f48cbb0ca2cb&mpshare=1&scene=23&srcid=0717YwK4qL7CZensuJIUhOZA#rd
 # ajv github
https://github.com/epoberezkin/ajv

# ajv-errorserror
https://github.com/epoberezkin/ajv-errors

# 更多json-Sechema的參數規范和示例:
http://json-schema.org/examples.html

 

入門demo1:

var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true});

var schema = {
  "properties": {
    "foo": { "type": "string" },
    "bar": { "type": "number", "maximum": 3 }
  }
};

var validate = ajv.compile(schema);

test({"foo": "abc", "bar": 2});
test({"foo": 2, "bar": 4});

function test(data) {
  var valid = validate(data);
  if (valid) console.log('Valid!');
  else console.log('Invalid: ' + ajv.errorsText(validate.errors));
}

 

入門demo2,自定義錯誤信息: 

var Ajv = require('ajv');
var ajv = new Ajv({ allErrors: true, jsonPointers: true });
require('ajv-errors')(ajv /*, {singleError: true} */ );

var schema = {
    "properties": {
        "bar": {
            type: "number",
            minimum: 100,
            errorMessage: {
                type: "請填寫數量",
                minimum: "數量不能小於100"
            }
        },

        "foo": {
            type: "string",
            errorMessage: {
                type: "你TM是不是傻逼,要寫string類型啊"
            }
        }
    }
};

var validate = ajv.compile(schema);

test({ "foo": 2, "bar": 4 });

function test(data) {
    var valid = validate(data);
    if (valid) console.log('Valid!');
    else console.log(validate.errors);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM