资讯专栏INFORMATION COLUMN

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

2bdenny / 2338人阅读

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

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的语义化必须以函数调用来实现。

参考资料

https://github.com/hapijs/joi

https://github.com/hapijs/joi...

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

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

相关文章

  • NPM酷库:semver 语义版本判断

    摘要:今天在此向大家推荐一种非常流行的版本号命名规则语义化版本。语义化版本约定修订版本号代表在和之前接口不变的前提下修正了。就是专门用于语义化版本号检查的库,其也是语义化版本标准的制定者。 NPM酷库,每天两分钟,了解一个流行NPM库。 软件的命运就是不断维护、更新、迭代,所以我们用版本号来区分一个软件的不同时期和形态,版本号的命名方式有各种各样,有的以小数表示(几点几),有的以日期表示,有...

    Carbs 评论0 收藏0
  • JavaScript 踩坑心得— 为了高速(上)

    摘要:集装箱化集装箱化集装箱化以下是部分原因集装箱化会迫使你遵从应用开发大原则。通过集装箱化,可以实现开发阶段测试以及生产环境的对等。实现环境集装箱化的理由还有很多很多,一旦掌握了基本知识,集装箱化就不难实现。 一.前言 很多情况下,产品的设计与开发人员一直想打造一套高品质的解决方案,从而快速、平稳地适应产品迭代。速度是衡量产品适应性的真正且唯一的标准,而且,这并不是笔者的一家之言。 「速度...

    魏宪会 评论0 收藏0
  • NPM酷库042:ajv,JSON 模式验证

    摘要:酷库,每天两分钟,了解一个流行库。比如需要满足那些属性,每个属性都是什么类型的,这些条件称之为数据模式验证。在对数据的模式验证领域有专门的标准,叫做。就是按照标准声明一个模式对象,然后使用模式验证工具去验证目标数据。 NPM酷库,每天两分钟,了解一个流行NPM库。· 在NPM酷库041中,我们学习了如何用validator库来验证字符串是否是Email、URL等,在开发中,除了字符串,...

    lavnFan 评论0 收藏0
  • vue-cli系列之vue-cli自身引用了哪些包?持续更新中……

    摘要:概述当创建了一个后,我们使用就可以启动项目了。这个命令实际上是启动了一段脚本,那这个脚本引用了哪些包呢让我们来一探究竟。实例检测本机版本是否符合需求的版本。链接概述这个包是用来处理命令行的参数输入的。设置检查范围的起始端口号。 概述 当vue-cli创建了一个vue-demo后,我们使用npm run serve就可以启动项目了。通过package.json中的serve命令我们可以看...

    LiuRhoRamen 评论0 收藏0
  • NPM酷库:pify 将异步函数Promise

    摘要:酷库,每天两分钟,了解一个流行库。昨天我们了解到可以用库将样式库转化为样式,同时库也提供了强大在增强版的,如果我们需要转化函数,且仅需要使用标准的,那么使用有些大材小用。 NPM酷库,每天两分钟,了解一个流行NPM库。 所有Node.js标准库和很多第三方库提供的接口都是callback样式的,在ES7标准时代,使用async/await配合Promise才是最佳实践。 昨天我们了解到...

    ccj659 评论0 收藏0

发表评论

0条评论

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