"req.checkBody - это не функция"? - PullRequest
0 голосов
/ 07 апреля 2020

Когда я отправляю форму, содержимое которой проверяется с помощью express -validator, я получаю сообщение об ошибке «req.checkBody не является функцией» (и если я удаляю строку, которая генерирует это, я получаю другие ошибки, например « req.sanitize не является функцией "). Похоже, express -validator не распознается должным образом, поэтому я подумал об изменении текущей версии, а затем я удалил текущую версию и установил более старую version@5.3.1 все еще. Она показывает ту же ошибку.

Сначала я потребовал его в основном приложении. js file 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);
    });
}));```

...