Как вывести ошибки проверки в представление для опции unique: true
электронной почты?В моем представлении руля я получаю errors
переданный от var errors = req.validationErrors();
и отображаю его в работающем представлении.но проверка уникальности электронной почты происходит на user.save((err)
и просто отправляется на консоль.Проверка работает правильно, ни один пользователь не создается, если есть дубликат электронной почты.Я просто пытаюсь отправить сообщение об ошибке в представление.Могу ли я сделать req.check
для unique: true
?
const UserSchema = new Schema({
email: { type: String, index: { unique: true } },
password: { type: String, required: true }
});
мое представление createUser.handlebars
{{#if errors}}
<section class="errors">
<ul>
{{#each errors}}
<li>{{this.msg}}</li>
{{/each}}
</ul>
</section>
{{/if}}
функция createUser
module.exports.createUser =
(req, res, next) => {
let user = new User({
email: req.body.email,
password: req.body.password
});
req.check('email', 'Invalid email').isEmail();
req.check('password', "Passwords must match").isLength({min: 6}).equals(req.body.passwordConfirmation);
var errors = req.validationErrors(); // save any error messages
// check if there are any errors
if (errors) {
req.session.errors = errors;
req.session.success = false;
return res.redirect('/users/new');
} else {
req.session.success = true;
}
// save the user
user.save((err) => {
if (err) {
console.log("Error : %s ", err);
}
// set the session messages back to null and redirect
req.session.success = null;
req.session.errors = null;
res.redirect('/');
});
};