[ validator ]
[ express-validator 官方文档 ]
[ express-validator 都包含什么 ]
npm i validator express-validator
---
const v = require('express-validator')
for(let k in v) {
console.log(k)
}
- 其中 body cookie header param query 都是验证规则制定函数,他们会返回一个中间件,该中间件包含了一系列可以返回中间件自身的验证方法,从而可以实现链式调用。
- 该中间件具有一个 run 方法,需要传入 req, 会返回一个 promise, 这在写自定义 validator验证器的时候会用到
- 这些中间件分别用来配置对请求体包含的各个部分数据的验证规则
- matchedData 是一个方法,传入 req 返回被验证的数据所组成的对象
- validationResult 是一个方法,需要传入 req 请求体作为参数,返回一个对象 result
- result.isEmpty() 返回一个是否存在违反验证规则数据的存在
- result.array() 返回一个数组,数组中包含违反验证规则的数据信息,结构如下:
[
{
"location": "query",
"msg": "Invalid value"
"path": "person",
"type": "field"
}
]
[ 组织和手动运行验证器 ]
module.exports = function validator(validations) {
return async (req, res, next) {
await Promise.all(validations => {
validation.run(req)
})
const result = validationResult(req)
if(result.isEmpty()) return next()
res.status(500).json({errors: result.array()})
}
}
const validator = require('.../validator')
exports.loginValidator = validator([
body('username')
.trim()
.isEmpty().withMessage('用户名不能为空')
.cuntom(async (value, {req}) => {
const user = await fn()
if(user) {
return Promise.reject('用户名已经存在')
}
}),
body('password')
])
[ buildCheckFunction ]
- 该方法可以生成一个自定义验证规则函数,类似于 express-validator 的 body 自定义方法
- 接受一个参数 location,也就是 'boxy' | 'cookies' | 'headers' | 'params' | 'query' 或者由它们组成的数组
const isYourGirl = buildCheckFunction(['query, params'])
app.get('/isyourgirl', isYourGirl('girlname').custom(value => ...))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步