Hapi.js 的 enjoi 插件:从 JSON 对象创建 Joi 验证规则

阅读时长 5 分钟读完

Joi 是一个流行的 Node.js 库,用于验证数据的格式和内容。Hapi.js 是一个构建 Web 应用程序的框架,其中包含了 Joi 库的使用。但是,有些情况下我们需要手动编写 Joi 的验证规则,这时候就可以使用 enjoi 插件,它可以从 JSON 对象中自动生成 Joi 验证规则,方便开发人员快速地创建验证规则。

安装 enjoi

首先,我们需要在项目中安装 enjoi。打开终端,进入项目根目录,执行以下命令:

安装完成后,我们就可以在代码中使用 enjoi 了。

使用 enjoi

enjoi 提供了一个 parse() 函数,它可以从 JSON 对象中自动生成 Joi 验证规则。下面是 enjoi 的基本用法:

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

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

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

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

在上面的示例中,我们使用 enjoi 的 parse() 函数从 JSON 对象中创建了一个 Joi 验证规则,然后使用这个验证规则验证了一份数据,如果数据格式正确,则输出“数据格式正确”;如果数据格式错误,则输出错误信息。

使用 JSON 定义 Joi 验证规则

我们可以使用 JSON 对象来定义我们的 Joi 验证规则。下面是一个简单的示例:

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

在上面的示例中,我们使用了如下格式的 JSON 对象来定义我们的 Joi 验证规则:

  • 对象的每个属性表示要验证的数据的一个属性;
  • 属性的值是一个对象,表示该属性的验证规则;
  • 对象中的键值对表示该属性的验证条件。

可以看到,我们的 JSON 对象与我们在之前使用 enjoi.parse() 函数生成的验证规则非常类似,这意味着我们可以轻松地使用 JSON 来自动生成 Joi 验证规则。

让我们使用上面的 JSON 对象来创建 Joi 验证规则:

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

现在,我们已经成功地使用 JSON 对象创建了一个 Joi 验证规则。

高级用法

enjoi 还提供了许多高级用法,例如:

自定义验证规则

可以使用 enjoi.custom() 函数来自定义验证规则:

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

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

在上面的示例中,我们在验证规则中定义了一个自定义验证规则,使用了 Joi.number().min(18) 来验证 age 属性的值是否大于等于 18。

引用其他验证规则

可以使用 $ref 属性来引用其他验证规则:

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

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

在上面的示例中,我们使用了 $ref('$.minAge') 来引用 minAge 属性。这可以让我们在定义验证规则时避免重复代码。

总结

enjoi 插件可以帮助开发人员从 JSON 对象中自动生成 Joi 验证规则,减轻编写验证规则的工作量。它提供了许多高级用法,使我们能够灵活地定制验证规则。如果你是一个 Hapi.js 开发人员,enjoi 绝对值得一试。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab59d148841e989472d149

纠错
反馈