在前端开发中,我们需要经常处理数据。但很多时候,我们只关注数据中的某些字段。而处理数据和筛选字段时,我们需要经常使用 JSON Schema。但是,写 JSON Schema 是很困难的,不仅仅需要深刻理解规范,而且写出来的 JSON Schema 也很难维护。
但是,幸运的是,我们有一个 npm 包但terscotch.post-schema,帮助我们快速生成 JSON Schema,提高开发的效率。
安装
首先,需要在项目中安装 butterscotch.post-schema。通过命令行,在项目目录下执行:
npm install butterscotch.post-schema
使用
安装完成后,安装好 butterscotch.post-schema 后就可以使用了。可以引入 butterscotch.post-schema 提供的各种配置项,以及对数据作出相应的处理,最后生成需要的 JSON Schema。
首先我们需要导入模块:
const postSchema = require("butterscotch.post-schema");
假设我们要处理的数据大致如下:
-- -------------------- ---- ------- ----- ---- - - ----- ------ ---- --- ------- ------- ------ ---------------- ------ ------------------ -------- - -------- ------ ----- ---- ----- - --
如果我们只需要获取 name,age 和 email 字段,可以这样生成相应的 JSON Schema:
const schema = postSchema({ name: true, age: true, email: true }).type("object"); console.log(schema.toJSON());
这样我们就可以快速的生成我们需要的 JSON Schema,并在需要的地方使用它。
深入理解
但terscotch.post-schema 本质上是使用 joi 库来生成 JSON Schema 的。Joi 是一个用于验证、解析和转换数据的库。它使用 joi 提供的一些 API 来定义数据的结构,joi 可以验证数据是否合法,或者在数据满足一定要求时转换它。
在 butterscotch.post-schema 中,有很多方法和配置,可以帮助我们定制化如何处理数据和生成相应的 JSON Schema。比如,我们可以指定数据中某个字段必须存在、必须为特定类型、必须满足特定格式等等。
下面是一些常用的方法和配置:
基本类型
通过 butterscotch.post-schema 我们可以直接使用 joi 自带的基本类型验证函数来指定字段的类型,比如:
const schema = postSchema({ name: postSchema.string().required(), age: postSchema.number().required(), email: postSchema.string().email().required() }).type("object");
这里我们使用了 string()
、number()
和 email()
三个基本类型验证函数,它们可以帮助我们限制输入的数据类型,保证数据的有效性,使得我们更加放心的处理数据。
自定义验证函数
有时候,我们需要基于自己的业务逻辑,对字段的输入数据做一些自定义的验证。这时候,可以自定义验证函数来实现。假如在上面示例的数据中,我们还需要验证 age 是否在 0 到 120 的范围内,可以这样写:
-- -------------------- ---- ------- ----- ------------- - ----- -- - -- ---- - - -- --- - ---- - ----- --- ---------- ---- -- ------- - --- ------ - ------ ---- -- ----- ------ - ------------ ----- ------------------------------- ---- ----------------------------------------------------- ------ -------------------------------------- ------------------
在这里,我们通过调用 custom()
方法,并传入自定义的函数 ageValidation
,来自定义 age 字段的验证行为。此时,当 age 的值不在 0 到 120 范围内时,会抛出一个异常。
定义可选字段
另外,我们也可以通过 butterscotch.post-schema,来对数据中的可选字段进行定义。比如,在前面的示例中,address 字段并不是必需的,所以我们可以这样定义:
-- -------------------- ---- ------- ----- ------ - ------------ ----- ------------------------------- ---- ------------------------------- ------ --------------------------------------- ------ ------------------------------- -------- ------------------- -------- ------------------------------- ----- ------------------------------ ------------- ------------------
在这里,我们通过调用 optional()
方法,来指定 fields 字段为可选的,表示有些字段不一定需要出现,而不是必须的。
组合类型
有时候,我们会需要对字段组合的情况进行验证。比如,在用户注册时,我们需要验证用户输入的密码是否符合规范,比如长度不少于 8 个字符,同时包含至少一个大写字母,一个小写字母和一个数字。我们就可以这样定义:
const schema = postSchema({ email: postSchema.string().email().required(), password: postSchema.string().regex( /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,}$/).required() }).type("object");
在这里,我们调用了 regex()
方法,使用了正则表达式来定义 password 字段的格式要求。而正则表达式 /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,}$/
则验证 password 是否符合我们的要求。
总结
在本篇文章中,我们介绍了 npm 包 butterscotch.post-schema 的使用方法,并且讲述了如何使用它来提高开发效率,同时我们还深入讲解了 butterscotch.post-schema 的一些重要特性,比如如何定义数据类型、如何验证自定义规则等等。希望本文对你在以后的前端开发中能有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005603d81e8991b448de697