我正在使用express-validator并希望根据请求正文中的值进行不同的检查。
我为此创建了一个函数,但我没有收到任何回复(即快递只是挂起。):
验证/profile.js
module.exports = function (req,res,next) {
if (req.body.type == 'teacher') {
return check('name').exists().withMessage('Name is required'),
} else {
return check('student_id').exists().withMessage('Student id is required'),
}
}
应用程序.js
router.put('/', require('./validation/profile'), (req, res, next) => {
const errors = validationResult(req).formatWith(errorFormatter)
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.mapped() })
} else {
res.send(req.user)
}
})
但是,如果我将函数编写为普通函数(而不是具有 3 个参数的中间件)并调用它,则一切正常。但是这样,我将无法访问请求对象。我必须对参数进行“硬编码”。
验证/profile.js
module.exports = function (type) {
if (type == 'teacher') {
return check('name').exists().withMessage('Name is required'),
} else {
return check('student_id').exists().withMessage('Student id is required'),
}
}
应用程序.js
router.put('/', require('./validation/profile')('teacher'), (req, res, next) => {
const errors = validationResult(req).formatWith(errorFormatter)
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.mapped() })
} else {
res.send(req.user)
}
})
关于如何根据请求正文中的值进行不同检查的任何建议?