npm 包 express-validator-proxy 使用教程

阅读时长 6 分钟读完

简介

在前端开发过程中,表单验证是一个不可避免的步骤。而使用 express-validator 进行验证是一种非常流行的方式。不过,对于一些需要验证多个表单的项目,我们并不能将所有的验证逻辑写入同一个中间件函数中。

这种情况下,我们可以使用 express-validator-proxy 这个 npm 包。本文将介绍如何使用这个包来简化和优化验证逻辑。

安装和使用

  1. 首先,在项目中安装 express-validatorexpress-validator-proxy

  2. server.js 文件中引入 express-validatorexpress-validator-proxy

  3. 定义一个验证数组,并将其传递给 validatorProxy

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

    在上面的示例中,我们首先定义了一个验证数组 validate,包含了三个表单项的验证逻辑。然后在 app.post 中,我们将该数组直接传递给 validate 参数,代表所有表单项都需要执行验证。

    接着,我们在 app.post 的参数列表中再次传入 validatorProxy,表示需要将 validate 数组中的验证逻辑代理到实际执行验证的中间件函数中。

    最后,我们在 app.post 的回调函数中,检查表单验证是否通过。如果没有通过,则返回 422 状态码和错误信息数组。如果通过,则继续处理表单提交的逻辑。

深入理解

在上面的示例中,我们使用 experss-validator-proxy 简化了验证逻辑。那么这个包是如何实现的呢?

实际上,express-validator-proxy 在内部创建了一个中间件函数 validate 来代替我们手动调用 check 函数进行验证。该中间件函数接受一个验证数组作为参数,循环遍历该数组,并将每一项验证逻辑传递给 check 函数。具体代码如下:

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

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

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

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

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

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

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

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

validate 函数中,我们首先从 req 中获取到验证数组,然后循环遍历其中的 check 函数。在遍历的过程中,我们将每一个 check 函数返回的验证错误对象添加到 req.__validationErrorsToAdd 数组中。注意,这里的 req 对象是 Express 中的请求对象,可以使用中间件函数添加自定义属性。

validate 函数执行完毕后,Express 会继续调用下一个中间件函数。这时, req.__validationErrorsToAdd 已经被填充了所有的验证错误对象。我们只需要将 req.__validationErrorsToAdd 内的错误对象合并到 validationResult(req) 返回的错误数组中即可。

总结

express-validator-proxy 的作用是将 check 函数中的验证逻辑代理到实际执行验证的中间件函数中,让验证逻辑变得更加简洁和可维护。在使用过程中,需要注意引入和传递验证数组的顺序,以及验证错误对象的合并方式。这些细节都可以在官方文档中找到对应的说明。

使用 express-validator-proxy,能够有效地提高开发效率,减少出错的概率。因此,在使用 express-validator 进行表单验证时,可以考虑使用这个 npm 包来简化验证逻辑。

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

纠错
反馈