Javascript 如何解决TypeError:express validator不是一个函数
我正在使用ExpressValidator版本6.4.0。我在运行服务器时遇到此错误。我尝试使用自定义验证,并为验证器、控制器和路由创建了单独的文件 这是主服务器文件“index.js” 我的验证器文件有两个函数,一个用于检查验证,另一个用于返回基于验证“user.validator.js”的响应 这是我在user.controller.js中的唯一函数Javascript 如何解决TypeError:express validator不是一个函数,javascript,mysql,node.js,express,mern,Javascript,Mysql,Node.js,Express,Mern,我正在使用ExpressValidator版本6.4.0。我在运行服务器时遇到此错误。我尝试使用自定义验证,并为验证器、控制器和路由创建了单独的文件 这是主服务器文件“index.js” 我的验证器文件有两个函数,一个用于检查验证,另一个用于返回基于验证“user.validator.js”的响应 这是我在user.controller.js中的唯一函数 exports.create = (req, res, next) => { try { console.log
exports.create = (req, res, next) => {
try {
console.log(req.body);
return res.json(req.body);
} catch (error) {
return next(error);
}
}
这是路由文件“user.routes.js”
在版本6中,您不需要使用app.use(expressValidator());只需在中间件中使用express validator实用程序,就可以在github问题中看到一些实现: 这是我的实现。 删除:
app.use(expressValidator())
然后:
var router=express.router();
const{check,validationResult}=require('express-validator');
router.post(“/寄存器”,
[
检查('email','email无效')。isEmail(),
选中('username','username字段为必填项').not().isEmpty(),
检查('password','password字段是必需的')。not().isEmpty())
],
功能(req、res、next){
//检查错误
常量错误=验证结果(req);
如果(错误){
console.log(错误);
res.render('register',{errors:errors.array()});
}
否则{
console.log(“无错误”);
res.render('仪表板',{消息:'成功注册'});
}
});
在版本6中,您不需要使用app.use(expressValidator());只需在中间件中使用express validator实用程序,就可以在github问题中看到一些实现:
这是我的实现。
删除:
app.use(expressValidator())
然后:
var router=express.router();
const{check,validationResult}=require('express-validator');
router.post(“/寄存器”,
[
检查('email','email无效')。isEmail(),
选中('username','username字段为必填项').not().isEmpty(),
检查('password','password字段是必需的')。not().isEmpty())
],
功能(req、res、next){
//检查错误
常量错误=验证结果(req);
如果(错误){
console.log(错误);
res.render('register',{errors:errors.array()});
}
否则{
console.log(“无错误”);
res.render('仪表板',{消息:'成功注册'});
}
});
您好,thread帮您解决问题了吗?谢谢,它起作用了……您好,thread帮您解决问题了吗?谢谢,它起作用了。。。
const { check, validationResult } = require('express-validator');
const checkValidation = (method) => {
switch (method) {
case "create": {
return [
check("first_name").exists().withMessage("It is mandatory to enter your first name"),
check("last_name").exists().withMessage("It is mandatory to enter your last name"),
check("email").exists().withMessage("It is mandatory to enter email")
.isEmail().withMessage("The email must be in correct format as foo@bar.com"),
check("password").exists().withMessage("It is mandatory to enter password")
.isLength({ min: 6 }).withMessage("Password must be at least 6 characters in length"),
check("role").exists().withMessage("It is mandatory to enter role")
.isInt().withMessage("Role must be a number")
];
}
}
}
const validate = (req, res, next) => {
const errors = validationResult(req);
if (errors.isEmpty()) {
return next();
}
const extractedErrors = [];
errors.array().map(err => extractedErrors.push({ [err.param]: err.msg }))
return res.status(422).json({
errors: extractedErrors,
});
}
module.exports = {
checkValidation,
validate,
};
exports.create = (req, res, next) => {
try {
console.log(req.body);
return res.json(req.body);
} catch (error) {
return next(error);
}
}
module.exports = app => {
const user = require('../controllers/user.controller');
const {checkValidation, validate } = require('../validators/user.validate');
let router = require('express').Router();
//route to create a new tutorial
router.post('/', checkValidation('create'), validate(), user.create);
app.use('/api/users', router);
}