官网
express-validator | express-validator
介绍
它允许您以多种方式组合它们,以便您可以验证和清理您的明确请求,并提供工具来确定请求是否有效、根据验证器匹配哪些数据等等。
常见使用
1. body 仅检查 req.body 部分
const { body } = require("express-validator");
exports.register = [
//必填参数验证
[
body("username")
.notEmpty()
.withMessage("用户名不能为空.")
.custom((value, { req }) => {
return userModel.findOne({ username: value }).then((user) => {
if (user) {
return Promise.reject(
`用户名:${user.username}已经注册,请更换其他.`
);
}
});
}),
body("password")
.notEmpty()
.withMessage("密码不能为空.")
.isLength({ min: 6 })
.trim()
.withMessage("密码不能小于6位."),
],
async (req, res) => {
},
];
.notEmpty()
确保该字段的值不为空。.withMessage()
定义了当验证不通过时返回给客户端的错误消息。.custom()
允许自定义验证逻辑,这里用于检查用户名是否已存在于数据库中,如果存在则通过Promise.reject()
抛出错误,导致验证失败。.isLength()
验证长度。.trim()
去除空格。
2. query 仅检查 req.query
const { query } = require("express-validator");
exports.verifyConfirm = [
//必填参数验证
[
query("email")
.notEmpty()
.withMessage("邮箱不能为空.")
.isEmail()
.normalizeEmail()
.withMessage("邮箱格式不正确."),
query("code")
.notEmpty()
.withMessage("验证码不能为空.")
.withMessage("验证码不能为空."),
],
async (req, res) => {
},
];
.notEmpty()
确保该字段的值不为空。.withMessage()
定义了当验证不通过时返回给客户端的错误消息。.isEmail()
格式验证。.normalizeEmail()
标准化邮箱地址。
3. validationResult()
用于处理和获取请求验证的结果
当使用body()
, query()
, param()
等方法来定义验证规则后,validationResult
可以收集这些验证规则执行后的结果,
exports.register = [
//必填参数验证
[
body("username")
.notEmpty()
.withMessage("用户名不能为空.")
.custom((value, { req }) => {
return userModel.findOne({ username: value }).then((user) => {
if (user) {
return Promise.reject(
`用户名:${user.username}已经注册,请更换其他.`
);
}
});
}),
body("password")
.notEmpty()
.withMessage("密码不能为空.")
.isLength({ min: 6 })
.trim()
.withMessage("密码不能小于6位."),
],
async (req, res) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
} else {
}
},
];