npm 包 egg-ajv-keywords 使用教程

引言

在编写 Web 前端应用时,数据校验是必不可少的一环。我们通常使用一些成熟的校验库来帮助我们完成这个任务,比如 JSON Schema、Joi 等。在 Egg.js 中,我们可以使用 egg-validate 来完成数据校验。而 egg-validate 本身也是基于 JSON Schema 实现的。

然而,尽管 JSON Schema 已经足以应对大部分的校验需求,但是有些时候我们还需要自定义一些校验规则,比如手机号码校验、身份证号码校验等等。这时可以使用 egg-ajv-keywords 来扩展 JSON Schema 的关键词,从而实现自定义的校验规则。

本文将介绍 egg-ajv-keywords 的使用方法,帮助你轻松实现自定义的数据校验规则。

安装 egg-ajv-keywords

egg-ajv-keywords 是一个 Egg.js 的插件,因此需要通过 npm 安装:

--- ------- ---------------- ------

同时还需要安装 ajvajv-errors

--- ------- --- ---------- ------

配置 egg-ajv-keywords

在 Egg.js 的配置文件 config.default.js 中添加如下配置:

---------- - -
  -------- -
    -- ---------
    --------- ---------- ----------
    -- ---------
    ---------- -----
    -- -----------
    --------------- -----
    -- --------------
    --------------- -----
    -- -------------
    -------- -
      ---------------- -----------
    --
  --
  -- ------
  ------- -----
  -- - --- ---- --- --
  ------------ -----
  -- ------- --- --
  ---------------- -----
--

其中 options 用于配置 ajv 实例,包括自定义关键词、错误信息格式化等。keywords 是自定义的关键词,可以添加你想要的任何关键词。例如,这里添加了 mobileidcard 两个关键词。如果你需要添加更多的关键词,只需要在这里添加即可。

定义自定义关键词

app/validator 目录下创建 keywords.js 文件,添加如下代码:

-------------- - -
  -- ------
  ------- -
    --------------- -
      ----- ------ - ----------------------
      ------ -------- -------------- -
        -- ------- ---- --- -------- -- ------------------- -
          --------------- - -- -------- --------- -------- ------- -- - ----- ------ ----- ------- ---
          ------ ------
        -
        ------ -----
      --
    --
    ------- -----
  --
  -- -------
  ------- -
    --------------- -
      ----- ------ - -------------------------------------------
      ------ -------- -------------- -
        -- ------- ---- --- -------- -- ------------------- -
          --------------- - -- -------- --------- -------- ------- -- - ----- -- ---- ------- ---
          ------ ------
        -
        ------ -----
      --
    --
    ------- -----
  --
--

上述代码定义了两个自定义关键词 mobileidcard,分别用于校验手机号码和身份证号码。这里使用了正则表达式进行校验,如果数据不符合校验规则,就会返回错误信息。同时通过 errors: true 配置将错误信息暴露给校验器。

使用自定义关键词

在 Egg.js 中使用自定义关键词非常简单。只需要在校验数据的 JSON Schema 中加入自定义关键词即可。例如,下面的代码片段定义了一个包含自定义关键词的 JSON Schema:

-------------- - -
  ----- ---------
  ----------- -
    ----- - ----- -------- --
    ---- - ----- --------- -------- -- -------- --- --
    ------- - ----- --------- ------- ---- --
    ------- - ----- --------- ------- ---- --
  --
  --------- -------- ------ --------- ----------
--

其中 mobileidcard 是两个自定义关键词。在 Egg.js 的 Controller 中使用该 JSON Schema 进行数据校验:

----- -------- -
  ----- - --- - - -----
  ----- ------ - ---------------------------------------------
  --- -
    ------------------------------ ------------------
  - ----- --- -
    --------------------
    -------------- -------- ------- -------------
  -
  -------- - - ------- --------- --
-

总结

本文介绍了如何使用 egg-ajv-keywords 扩展 JSON Schema 的关键词,实现自定义的数据校验规则。同时,我们还介绍了如何定义自定义关键词和在 Egg.js 中使用自定义关键词进行数据校验。希望本文能帮助你更好地理解数据校验的原理和使用方法。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600572f481e8991b448e9186


猜你喜欢

  • npm 包 gulp-material-icons-latest 使用教程

    前言 随着互联网技术的飞速发展,前端技术越来越重要,npm 作为 JavaScript 的包管理工具,为前端开发带来了很大的便利。本文介绍了一个可以帮助前端开发人员快速集成 Material Icon...

    3 年前
  • 前端开发者必知:使用 react-styleguidist-extended 快速构建 UI 组件

    前言 前端开发人员在开发过程中,需要使用很多的 React 组件。然而,UI 组件的开发也会面临一些挑战,如:组件的独立性、代码风格、文档编写等等。这就需要一款工具来帮助我们快速构建可维护,易扩展的 ...

    3 年前
  • npm 包 wmcc-file 使用教程

    介绍 在前端开发中,文件上传和文件夹浏览是一个常见的需求。而 npm 包 wmcc-file 就是一个封装了文件上传和文件夹浏览的工具。 wmcc-file 基于 web 组件技术,支持上传文件、上传...

    3 年前
  • npm包 @ls-age/logger 使用教程

    在前端开发中,出现问题时对日志的管理和记录尤为重要。一个好的日志系统可以帮助我们快速定位问题,降低排查问题的时间成本。@ls-age/logger是一个方便管理和记录日志的npm包,它能够帮助我们快速...

    3 年前
  • npm 包 wmcc-inet 使用教程

    前言 在前端开发中,我们常常需要进行网络请求相关操作,而在 Node.js 和浏览器环境下,npm 包是非常常见的解决方案。而 wmcc-inet 就是一个非常实用的网络请求库,它提供了一套简单易用的...

    3 年前
  • npm 包 only-space 使用教程

    在前端开发中,我们经常需要处理用户的输入数据以及字符串数据的格式化问题。这时,一个小巧的 npm 包——only-space,就能为我们提供很多方便。本文将介绍如何使用 only-space,以及它在...

    3 年前
  • npm 包 @arguiwu/react-native-gesture-password 使用教程

    React Native 是一种跨平台的移动端开发框架,且具有广泛的应用场景。 @arguiwu/react-native-gesture-password 是一种可重用的 React Native ...

    3 年前
  • npm 包 aliyun-iot-mqtt 使用教程

    阿里云物联网平台(Aliyun IoT Platform)是一款物联网平台,它能够协助开发者快速构建安全、稳定的物联网系统,并提供了丰富的工具和服务来支持设备连接、数据采集、消息交换和远程控制等功能,...

    3 年前
  • npm 包 @rbarilani/react-simple-inpagenav 使用教程

    前言 在前端页面中,经常需要对长页面进行导航定位,便于用户进行浏览和操作。而 @rbarilani/react-simple-inpagenav 就是一个方便实用的 npm 包,可以快速创建基于锚点的...

    3 年前
  • npm包jason-ivy-test使用教程

    在前端开发中,我们常常需要用到各种各样的 npm 包来帮助我们完成一些相对复杂的功能,其中 jason-ivy-test 就是一款非常实用的测试工具,帮助我们实现一些简单的测试。

    3 年前
  • npm 包 twitter-bootstrap-wiz 使用教程

    前言 作为前端开发人员,我们都知道 Twitter Bootstrap 是一个非常流行的前端框架。它提供了基本的 HTML、CSS 和 JavaScript 组件,可以帮助开发人员快速构建漂亮的、响应...

    3 年前
  • npm 包 vue-watermark 使用教程

    前言 在前端开发中,防止网站的资料被无意间拷贝或窃取是一个重要的问题。为了解决这个问题,我们可以使用水印技术来保护网站资料的安全。在 Vue 框架中,有一个非常方便的 npm 包——vue-water...

    3 年前
  • npm 包 html-inline-source-loader 使用教程

    随着前端技术的不断发展,使用外部资源文件已经成为前端开发中不可避免的一个环节。但是,如果你希望在将网页发布到服务器之前将这些文件内嵌到网页中,以提高页面加载速度,那么该怎么办呢? 这时候,就需要使用一...

    3 年前
  • npm 包 radial-progress-chart-mod 使用教程

    简介 radial-progress-chart-mod 是一个轻量级的 JavaScript 库,专门用于生成环形进度图。该库非常易于使用,支持定制化,而且提供了丰富的 API 以满足用户对不同类型...

    3 年前
  • npm 包 ngx-gallery-test 使用教程

    介绍 ngx-gallery-test 是一款基于 Angular 框架的图库插件。该插件提供了非常丰富的功能,支持多种不同的图片展示方式,包括缩略图、放大、轮播等。同时还支持自定义配置和扩展。

    3 年前
  • npm 包 rx-node-rdkafka 使用教程

    简介 rx-node-rdkafka 是一个基于 Apache Kafka 的 Node.js 包,它提供了一种简单的方式将 Kafka 生产者和消费者与 RxJS 组合在一起,可以快速进行消息处理,...

    3 年前
  • npm 包 webpack-umbraco-package-plugin 使用教程

    什么是 webpack-umbraco-package-plugin? webpack-umbraco-package-plugin 是一个 webpack 插件,用于打包生成 Umbraco v7 ...

    3 年前
  • npm 包 wmcc-mutex 使用教程

    在前端开发中,我们常常会遇到需要进行线程互斥的情况,比如我们需要对同一资源进行加锁或解锁操作,防止多个线程同时修改该资源,导致数据出错。在这种情况下,使用 Mutex(互斥量)是比较常见的解决方式。

    3 年前
  • npm 包 wmcc-tcp 使用教程

    在前端开发中,TCP 协议是很常用的一种网络通信协议。wmcc-tcp 是一个基于 Node.js 的 npm 包,用于建立 TCP 长连接并进行通信。本文将详细介绍如何使用 wmcc-tcp,包括安...

    3 年前
  • npm 包 @oledm/react-telephone-input 使用教程

    前端开发中,我们经常需要在表单中添加手机号码输入框。而基于 React 的 @oledm/react-telephone-input 这个 npm 包提供了一个方便易用的手机号码输入框组件,可以帮助我...

    3 年前

相关推荐

    暂无文章