前言
前后端开发中,表单校验是一个常用且必要的功能。前端开发中一些 UI 库如 Element、Ant Design 表单组件都使用了 async-validator 作为校验库。
async-validator 功能与特性:
- 内置多种数据格式校验功能,包括数组、枚举、对象
- 异步校验库,支持自定义校验方法
- 一个字段支持多个校验规则,支持自定义字段错误信息
- 可校验整个表单错误(指出每个错误的校验),也可以提前终止校验程序(一旦出错就终止校验)
中后台管理前端项目中使用了 Element 或 Ant Design 时,可在 Node.js 后端项目使用该库实现前后端同构,应用端项目亦可自行封装使用,对于同一个接口或类似接口可以使用相同的校验规则。
伪代码:
import { createProduct } from '@/model/schema' |
基本使用
验证规则定义:
const createProduct = { |
基础校验:
使用使用方式详见 async-validator 文档
import asyncValidator from 'async-validator' |
示例数据校验不通过,以下为错误信息,可根据错误信息进行后续逻辑处理:
// errors |
Koa 中封装示例
封装目标:
- 减少代码量,避免在
controller
层频繁引入 - 支持排除/选取指定字段
- 校验失败自动抛出错误,终止后续逻辑,校验成功返回处理后的数据
封装代码如下:
const asyncValidate = require('async-validator') |
至此,我们完成了 Koa 中一个相对完备的表单校验功能。