npm 包 egg-ajv-keywords 使用教程

阅读时长 6 分钟读完

引言

在编写 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

纠错
反馈