Node.js 中的参数校验库,你真的了解它吗?

阅读时长 6 分钟读完

在 Node.js 中,参数校验是一项非常重要的功能。当我们编写具有多个参数的函数时,需要确保传递给函数的参数符合我们的要求。如果传递了不正确的参数,函数可能会崩溃或提供错误的结果。为了解决这个问题,我们需要使用一个强大的参数校验库。

何为参数校验库?

参数校验库是一种工具,用于确保输入数据的类型和格式符合我们的预期。这些库通常使用 schema(模式)来描述输入格式,并提供验证函数来检查数据是否符合此模式。

在 Node.js 中,有许多参数校验库可供选择。每个库都有自己的优点和不足。以下是一些最流行的 Node.js 参数校验库:

  • Joi
  • Validator.js
  • Yup
  • Ajv

在本文中,我们将更加详细地探讨 Joi 库。

为什么要选择 Joi 库?

Joi 库是一个功能强大的参数校验库,它具有以下优点:

  • Joi 是一个非常灵活的库,可以与任何 Node.js 框架和库集成使用。
  • Joi 具有丰富的 API 和文档,可轻松定义复杂的模式和规则。
  • Joi 可以轻松处理异步验证。
  • Joi 支持本地化和自定义错误消息,使其易于与不同的应用程序集成。

如何使用 Joi 库?

在开始使用 Joi 之前,我们需要在项目中安装它。可以使用以下命令在项目中安装 Joi 库:

安装之后,我们可以开始使用 Joi 库了。

基本示例

以下是一个使用 Joi 库来校验输入数据的基本示例:

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

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

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

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

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

在这个示例中,我们使用 Joi 定义了一个名为“schema”的对象。该对象描述了输入数据的格式,并定义了一些规则(例如,我们的密码必须是 3 到 30 个字符的字母数字字符串)。然后,我们使用 validate() 方法校验输入数据。如果数据符合模式,则 validate() 方法将返回一个错误对象。如果数据不符合模式,则 validate() 方法将返回 null 和输入数据的复制。

复合 schema

Joi 允许我们将多个 schema 合并为一个复合 schema。以下是一个示例,说明如何合并两个 schema:

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

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

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

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

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

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

在这个示例中,我们定义了两个 schema:schema1 和 schema2。然后,我们使用 Joi.alternatives().try() 方法将这两个 schema 合并为一个复合 schema,并将其作为对象的属性添加到输入数据中。

自定义错误消息

Joi 允许我们自定义错误消息。以下是一个示例,说明如何使用自定义错误消息来校验输入数据:

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

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

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

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

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

在这个示例中,我们定义了一些自定义错误消息。这些消息将覆盖 Joi 的默认错误消息。然后,我们使用 messages() 方法将这些自定义错误消息添加到我们的 schema 中。最后,我们在 validate() 方法中使用 abortEarly: false 选项,以便一次输出所有错误消息。

结论

Joi 库是一个功能强大的参数校验库,它具有丰富的 API 和文档,使我们容易定义复杂的模式和规则。在 Node.js 中使用 Joi 库,我们可以轻松地确保输入数据的类型和格式符合我们的要求,并避免出现错误和异常情况。

希望这篇文章能帮助你掌握 Joi 库的基础知识和使用方法,从而更好地编写 Node.js 应用程序。

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

纠错
反馈