ExpressアプリケーションでAJAX経由でサーバーにデータを送信しているクライアント側のフォームがあります。エラーがある場合やメッセージが正常に送信された場合、ユーザーにいくつかの回答を表示したいと考えています。Express:router.postとrouter.getの間でロジックを共有します
このコードは、メッセージを送信できない場合のエラーメッセージを表します。私routes/contact.js
で
.form-validation-error {
display: none;
}
私はメッセージ送信処理しているrouter.post
ブロックがあります:
<div class="form-validation-error" style="{{formValidationError}}">ERROR: Message cannot be sent!</div>
:私のハンドルバーテンプレート内の特定のdiv要素は、次のようになります
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
の間でどのように変数を共有できますか?
ありがとうございました。私は 'router.use'にミドルウェア機能を書いています。 – Lanti