Я использую экспресс, и я делаю страницу регистрации, подключенную к базе данных mongo, я сделал так, чтобы, когда пользователь вводит тот же адрес электронной почты, что и другой пользователь, он высвечивает сообщение с помощью connect-flash «Электронная почта уже используется», но онане отображается на моем веб-сайте, даже если я поместил еще одно флеш-сообщение "Неверный адрес электронной почты", и это сработало.
index.js Код:
router.get('/user/signup', function(req, res, next) {
var messages = req.flash('error');
res.render('user/signup', {csrfToken: req.csrfToken(), messages : messages, hasErrors: messages.length > 0});
});
passport.js Код:
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 messages = []
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);
});
});
}));