问题描述
我正在使用 express-validator 版本 6.11.1 来验证来自 API 调用的数据输入,每次我使用 check 或 body 进行验证时,我都会收到以下错误:
TypeError: body(...).not(...).IsEmpty 不是函数
我使用下面的代码创建了一个名为 validator.js 的帮助程序
const { body,validationResult } = require('express-validator')
const bcrypt = require('bcrypt')
const signupValidation = () => {
return [
body('firstname')
.not().IsEmpty().withMessage('Firstname field is required'),body('lastname')
.not().IsEmpty().withMessage('Lastname field is required')
]
}
const validate = (req,res,next) => {
const errors = validationResult(req)
if (errors.isEmpty()) {
return next()
}
const extractedErrors = []
errors.array().map(err => extractedErrors.push({ msg: err.msg }))
res.status(200).json({
statusCode: 422,error: extractedErrors
})
}
module.exports = {
signupValidation,validate
}
我调用它的路线看起来像
const { signupValidation,validate } = require('../../helpers/validator')
//Endpoint to create new merchant
router.post('/account/create-merchant',signupValidation(),validate,async (req,res) => {
res.status(200).json({
statusCode: 201,message: req.body
})
})
来自 API 的示例数据
{
"firstname": "","lastname": "Jon","phone" : "*****","email" : "oayayayaya","password": "******"
}
您能否指导我如何解决错误消息(TypeError: body(...).not(...).IsEmpty is not a function)
解决方法
我认为应该是 isEmpty()
而不是 IsEmpty()
,试试这个:
const signupValidation = () => {
return [
body('firstname')
.not().isEmpty().withMessage('Firstname field is required'),body('lastname')
.not().isEmpty().withMessage('Lastname field is required')
]
}
检查文档 here