问题描述
我在 nodejs 中使用 express-validator。代码总是抛出第一条错误消息作为验证结果。
validation.js
const { check,validationResult } = require('express-validator')
const {handleError,ErrorHandler} = require('../helper/error');
const resultsOfValidation = (req,res,next) => {
const messages = [];
const errors = validationResult(req);
if(errors.isEmpty()) {
return next(); //pass to controller
}
errors.array().map( err => messages.push(err.msg));
throw new ErrorHandler(400,messages);
}
const createuserValidator = () => {
return [
check('firstName')
.exists({ checkFalsy: true }).withMessage('First Name is mandatory')
.bail()
.isAlpha().withMessage('First Name should have all alphabets')
.bail()
.isLength({min:3}).withMessage('First Name should have minimum 3 characters'),check('lastName')
.optional({ checkFalsy: true }) //ignore validation when null or empty
.isAlpha()
.bail()
]
}
module.exports = {
resultsOfValidation,createuserValidator,}
用户路线如下:
const router = express.Router();
router
.get('/',getAllUsers)
.post('/',createuserValidator(),resultsOfValidation,(req,res) => console.log('created'))
.get('/:id',getUserById)
.delete('/',deleteUserById)
module.exports = router;
我的user.js 控制器文件是:
module.exports = {
getAllUsers: async (req,res)=> {},createuser: async (req,next)=> {
try{
const errors = resultsOfValidation(req);
if (errors.length >0) {
throw new ErrorHandler(400,errors)
}
const { firstName,lastName } = req.body;
// call createuser from model
const user = await usermodel.createuser(firstName,lastName);
if(!user) {
throw new ErrorHandler(404,'User not created')
}
// return res.status(200).json({ success: true,user });
} catch (error) {
return res.status(500).json({ success: false,error: error })
}
},getUserById: async (req,deleteUserById: async (req,}
这是我提出的发布请求示例。它应该抛出名字应该至少有 3 个字符。但是我遇到了其他错误名字是必需的
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)