首页 > 解决方案 > “req.checkBody 不是函数”?

问题描述

当我提交使用 express-validator 验证其内容的表单时,我不断收到错误“req.checkBody 不是一个函数”(如果我删除生成它的行,我会收到其他错误,例如“req.sanitize is not一个函数”)。似乎 express-validator 没有被正确识别,所以我想更改当前版本,然后我卸载了当前版本并安装了旧版本@5.3.1 仍然显示相同的错误。

首先我在 app.js 主文件中需要它 var validator = require('express-validator');

然后我像这样使用它来进行验证

var User = require('../models/admin');
var LocalStrategy =  require('passport-local').Strategy;

passport.serializeUser(function(user, done) {
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
        done(err, user);
    });
});

passport.use('local.signup', new LocalStrategy({
 usernameField: 'email',
 passwordField: 'password',
 passReqToCallback: true,
}, function(req, email, password, done) {
    req.checkBody('email', 'Invalid email').notEmpty().isEmail();
    req.checkBody('password', 'Invalid password').notEmpty().isLength({min:4});
    var errors = req.validationErrors();
    if (errors) {
        var message = [];
        errors.forEach(function(error){
            messages.push(error.msg);
        });
        return done(null, false, req.flash('error', messages));
    }
    User.findOne({'email' : email}, function(err, user) {
        if (err){
            return done(err);
        }
        if (user){
            return done(null, false, {message: 'email is already in use'});
        }
        var newUser = new User();
        newUser.email = email;
        newUser.password = newUser.encryptPassword(password);
        newUser.save(function(err, result) { 
            if (err) {
                return done(err);
            }
            return done(null, newUser);
        });
    });
}));

passport.use('local.signin', new LocalStrategy({
    usernameField: 'email',
 passwordField: 'password',
 passReqToCallback: true,
},function (req, email, password, done){
    req.checkBody('email', 'Invalid email').notEmpty().isEmail();
    req.checkBody('password', 'Invalid password').notEmpty();
    var errors = req.validationErrors();
    if (errors) {
        var message = [];
        errors.forEach(function(error){
            messages.push(error.msg);
        });
        return done(null, false, req.flash('error', messages));
    }
    User.findOne({'email' : email}, function(err, user) {
        if (err){
            return done(err);
        }
        if (!user){
            return done(null, false, {message: 'No user found!!'});
        }
        if (!user.validPassword(password)){
            return done(null, false, {message: 'Wrong password!!'});
        }
      return done (null, user);
    });
}));```

标签: javascriptnode.jsmongodbexpressmean-stack

解决方案


推荐阅读