У меня есть форма на стороне клиента, которая отправляет данные на сервер через AJAX в моем приложении Express. Я хочу показать некоторые ответы пользователю, когда есть ошибки или сообщение отправлено успешно.Экспресс: общая логика между router.post и router.get
Этот код представляет собой сообщение об ошибке, когда сообщение не может быть отправлено. Конкретная ДИВ в моем шаблоне руля выглядит следующим образом:
<div class="form-validation-error" style="{{formValidationError}}">ERROR: Message cannot be sent!</div>
Что отключено по CSS по умолчанию:
.form-validation-error {
display: none;
}
В моих routes/contact.js
У меня есть router.post
блока, обрабатывающее сообщение отправки:
router.post('/', (req, res, next) => {
if(req.body.firstname.length === 0 || !req.body.firstname.match(/\D+/igm)) {
var validateFirstname = false;
} else {
var validateFirstname = true;
};
if(req.body.captcha.length === 0 || !req.body.captcha.match(/^kettő|ketto|two$/igm)) {
var validateCaptcha = false;
} else {
var validateCaptcha = true;
};
if(validateFirstname === true && validateCaptcha === true) {
console.log('SUCCESS: Form validated! The Nodemailer script will be here!');
} else {
console.log('ERROR: Form not validated!');
const formValidationErrorTrue = 'display: block;'; // -> How can I achieve this!??
res.send({formValidationError: 'display: block;'}); // -> Or this!??
};
});
После этого блока у меня есть часть обработки изображения router.get
:
router.get('/', (req, res, next) => {
fsAsync((err, data) => {
if(err) {
res.render('404', {
title: 'Error 404'
});
}
const contact = data[2].contact;
res.render('contact', {
title: 'Contact',
data: contact,
formValidationError: formValidationErrorTrue // -> How can I achieve this!??
});
});
});
Мой вопрос в том, как я могу делиться переменными между router.post
и router.get
?
Благодарим вас за идею. Я думаю, что я напишу функцию Middleware в 'router.use'. – Lanti