Express. js - Добавление пользовательского объекта в req.session.errors - PullRequest
0 голосов
/ 08 марта 2020

Я использую express -валидаторы и express -сессию для работы с моими формами.

в индексе. js: я перенаправляю на / надпись с ошибками как объект для показать ошибки над полями. Это прекрасно работает.

router.post('/submit-inscription', function (req, res, next) {
req.check('mail', 'Invalid Mail Address').isEmail();
var errors = req.validationErrors();
if (errors) { 
req.session.errors = errors;
req.session.success = false;
res.redirect('/inscription');
}

Но тогда, если нет ошибки, я проверяю, не существует ли введенная почта в моем myongodb.

Если она уже существует, Я хотел бы перенаправить на / надпись со специальной ошибкой. Я мог бы сделать это, используя новый параметр сеанса, но я хотел бы сделать это, используя тот же сеанс ошибок.

Итак, я попытался:

else { // email already used
error = {location: 'body', msg:"Email address already registered", param:'mail', value:''};
errors.push(error);
req.session.errors = errors;
res.redirect('/inscription');
}

Ошибка Я получаю это: errors.pu sh это не функция. Я полагаю, это потому, что ошибки - это не массив, а объект.

Поэтому мой вопрос заключается в том, как добавить эту пользовательскую ошибку в мой объект req.session.errors?

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

После обсуждения с Сохаилом, большое ему спасибо, он помог мне выяснить, где и как это решить.

let error = {location: 'body', msg:"Email address already registered", param:'mail', value:''};
req.session.errors = [error];
res.redirect('/inscription');
0 голосов
/ 08 марта 2020

Вы можете создать новый ключ в errors object и затем присвоить его session.error.

Пример:

errors.newSessionKey = error;
req.session.errors = errors;
res.redirect('/inscription');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...