资讯专栏INFORMATION COLUMN

NPM酷库042:ajv,JSON 模式验证

lavnFan / 2389人阅读

摘要:酷库,每天两分钟,了解一个流行库。比如需要满足那些属性,每个属性都是什么类型的,这些条件称之为数据模式验证。在对数据的模式验证领域有专门的标准,叫做。就是按照标准声明一个模式对象,然后使用模式验证工具去验证目标数据。

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 ,这个模式要求目标数据为一个对象,对象可以有五个字段 usernameemailpasswordagesex,并分别定义了五个字段的类型和数据格式要求,并且其中 usernameemailpassword 必填。然后我们使用这个模式去验证用户输入的数据 data 是否满足我们的需求。

注意:

JSON Schema 是一个声明模式描述对象的标准,并非一个库

ajv 是一个JSON Schema标准验证器的实现,除了ajv还有很多其他的库

代码中的 schema 是使用 JSON Schema 生成的模式描述对象

代码中 data 是我们要进行检查的数据

参考资料

JSON Schema http://json-schema.org

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107425.html

相关文章

  • NPM酷库043:joi,语义化模式验证

    摘要:酷库,每天两分钟,了解一个流行库。在酷库中,我们了解到了数据模式验证,以及库。是语义化的对象数据模式验证库,所谓语义化,是指其方法名能够明确表达其含义。 NPM酷库,每天两分钟,了解一个流行NPM库。· 在NPM酷库042中,我们了解到了JSON Schema数据模式验证,以及ajv库。今天我们来学习另一个对象数据验证的库joi。 joi joi 是语义化的对象数据模式验证库,所谓语义...

    2bdenny 评论0 收藏0
  • NPM酷库044:json5,更可读的JSON

    摘要:酷库,每天两分钟,了解一个流行库。是一个格式的扩展,目的是能够让人类更容易读写数据文件。只是一个第三方的库,并非格式的继任者。相对于,有如下各个方面优势。 NPM酷库,每天两分钟,了解一个流行NPM库。· JSON是JS中数据交换时最常用的数据格式,其序列话和反序列化性能非常好,但是其语法却比较严格,比如以下是一个合法的JS声明,却不是一个合法的JSON: { foo: bar } J...

    Flink_China 评论0 收藏0
  • 浅析webpack源码之入口函数webpack.js详解(四)

    摘要:我们看到引入了对进行分析是一个很大的文件,里面规定了我们随便看一段这是对你输入的规定的要求是是其实就是本下的这样写可以提取公用的配置,避免代码冗余一共行,其中就占了行接下里进入函数引入引入了,我们在搜索链接我们看到,在文档里这样的描述的用法 我们看到引入了 对webpack.js const validateSchema = require(./validateSchema); con...

    zone 评论0 收藏0
  • NPM酷库045:js-yaml,读写YAML

    摘要:酷库,每天两分钟,了解一个流行库。在酷库中,我们了解到了相对于格式更加易于编写和维护的,今天我们继续学习另外一个更加简单易读的数据格式。是一个专门用来读写格式数据的库,他可以将对象转换成字符串,也可以将字符串转换为对象。 NPM酷库,每天两分钟,了解一个流行NPM库。· 在NPM酷库044中,我们了解到了相对于JSON格式更加易于编写和维护的JSON5,今天我们继续学习另外一个更加简单...

    jsummer 评论0 收藏0
  • NPM酷库048:json2csv,导出csv文件

    摘要:酷库,每天两分钟,了解一个流行库。在做数据管理类应用时,尤其是管理后台,经常需要将数据导出为文件,方便在中离线打开查看。是一款用于将数据转换成格式文件的库。 NPM酷库,每天两分钟,了解一个流行NPM库。· 在做数据管理类应用时,尤其是管理后台,经常需要将数据导出为CSV文件,方便在Excel中离线打开查看。 json2csv json2csv是一款用于将JSON数据转换成CSV格式文...

    Forelax 评论0 收藏0

发表评论

0条评论

lavnFan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<