前言
在 Web 开发中,表单验证是必不可少的一环。Joi 是一款 Node.js 中非常流行的表单验证库,它提供了丰富的验证规则和错误提示功能,帮助我们轻松地实现表单验证。但是,Joi 默认返回的错误信息格式并不友好,不太适合直接展示给终端用户。为了让错误信息更清晰、更易懂,我们可以使用 joi-error-formatter 这个 npm 包。
joi-error-formatter 是什么?
joi-error-formatter 是一个基于 Joi 的错误格式化工具,可以将 Joi 返回的错误信息格式化成人类可读的文本。它会将错误信息中的属性路径、错误类型和提示信息解析出来,并按照规定的格式进行拼接。
安装和使用
安装 joi-error-formatter 的命令如下:
npm install joi-error-formatter --save
安装完成后,我们需要在代码中引入它并进行相关设置。示例代码如下:
-- -------------------- ---- ------- ----- --- - --------------- ----- ----------------- - ------------------------------- -- ------ ----- ------ - ------------ ------ -------------------- ------------------ - -------------- --------- ------------------------ ------------------------------------------ ---------------- -------------------- ----------- -------------------------------------------------- ---------- -------------------------------------------------- ----------- ------------------------------------------- ------- -------------------------- --------- -------- --- -- -------- ----------------- ----- ----- ------- - - ----------- ------ ------- - ----- - ------ -- - - -- ----- - ------ ----- - - ------------------------- --------- -- ------- - ----- -------------- - ------------------------ - --------- ------- --- -- ----------- ---------------------------- ------ ---------------------- ------ -------------- --- -
代码中,我们首先引入了 Joi 和 joi-error-formatter 两个 npm 包。然后定义了一个包含多个验证规则的对象 schema,在验证时,我们可以将验证规则传入 validate 方法中进行验证。
出现错误时,我们将错误对象 error 传入 joiErrorFormatter 方法中进行格式化处理,同时设置了 language 参数为 'zh-CN',表示将返回中文错误信息。最后将格式化后的错误信息返回给前端。
需要注意的是,我们在 options 对象中设置了 abortEarly: false,表示在出现错误时不要立即停止验证。这个参数默认为 true,如果设为 false,则可以验证出所有的错误信息,不会因为出现一条错误信息就终止验证。
从格式化错误信息中获取更多信息
使用 joi-error-formatter 进行错误信息格式化之后,我们还可以从格式化的错误信息中获取更多的信息。
在格式化的错误信息中,每一个属性的错误信息都会包含以下三个字段:
path
:属性的路径。type
:属性的错误类型。message
:属性的提示信息。
下面是一个格式化后的错误信息的示例:
-- -------------------- ---- ------- - ------ - ----- -------- ----- -------- -------- ------------- -- --------- - ----- ----------- ----- ---------------------- -------- ------------------ -- ---------------- - ----- ------------------ ----- ----------- -------- ----------------------------------- -- ----------- - ----- ------------- ----- ------------- -------- --------------------- - ----- -- ---------- - ----- ------------ ----- --------------- -------- -------------------- -- ----------- - ----- ------------- ----- ------------- -------- -------------------- ------ -- ------- - ----- --------- ----- ----------- -------- --------------------------------------- - -
我们发现,上面的错误信息中包含了每个属性的具体错误信息,包括错误类型、提示信息以及属性的路径。利用这些信息,我们可以更灵活地处理错误。例如:
- 我们可以根据路径(属性名)进行定位,将错误信息按需发送到相应的表单元素中。
- 我们可以根据错误类型进行分类,选择不同的提示样式展示错误信息。
- 我们可以对错误信息进行二次处理,例如将英文提示转化为中文等。
总结
使用 joi-error-formatter 进行错误信息格式化,可以让我们更方便地处理和展示表单验证出现的错误信息。它可以将 Joi 提供的错误信息进行标准化,让开发者可以从中获取更详细的错误信息。当然,我们也可以根据自己的需求进行二次处理,让错误信息呈现出更好的可读性和可操作性。因此,使用 joi-error-formatter 是非常推荐的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562f781e8991b448e0c3d