增加一个返回结果统一处理的中间件
const {validationResult} = require('express-validator')
module.exports = validator => {
return async(req,res,next)=>{
await Promise.all(validator.map(validator => validator.run(req)))
const error = validationResult(req)
if(!error.isEmpty()){
return res.status(401).json({error:error})
}
next()
}
}
规则模块
const {body} = require('express-validator')
const validate = require('./errorBack')
module.exports.register = validate([
body('username').notEmpty().withMessage('用户名不能为空').bail()
.isLength({min:3}).withMessage('用户名长度不能小于3').bail(),
body('email').notEmpty().withMessage('邮箱不能为空').bail()
.isEmail().withMessage('邮箱格式不正确').bail()
.custom(async val=>{
const emailValidate = await User.findOne({email: val})
if(emailValidate){
return Promise.reject('邮箱已被注册')
}
}).bail()
])
网友评论