Express アプリケーションの一般的な get route の一部として、express-session と connect-flash を使用して 2 つのフラッシュ メッセージを送信したいと考えています。ページがレンダリングされる前に req.flash が保存されないことを除いて、これはすべて機能します。その結果、ユーザーが別のページまたは同じページを再度読み込むまで、フラッシュ メッセージは表示されません。
ルートの最後の関数のコード:
Post.countDocuments().exec(function(err, count){
if(err) {
console.log(err);
res.redirect("back");
}
req.flash("success", ["It's working", "Hallelujah!"]);
req.flash("error", ["Uh oh!", "We have a problem..."]);
res.render("index", {posts: allPosts, dates: dates, current: pageNumber, pages: Math.ceil(count / pageLimit), showing: showing, total: count});
});
フラッシュ メッセージ テンプレート (ejs) の 1 つのコードは次のとおりです。
<div class="flash flash-success">
<div class="flash-header">
<span class="flash-title flash-title-success"><i class="fas fa-check"></i> <%= success[0] %></span>
<span class="flash-close" onclick="return closeFlash(this);"><i class="fas fa-times"></i></span>
</div>
<hr class="flash-hr">
<div class="flash-body-success"><%= success[1] %></div>
</div>
req.flash の後に .exec() を使用して、完了時に render ステートメントを実行しようとしましたが、これは機能しませんでした。コールバックで render ステートメントを使用して req.session.save() も試しましたが、これも失敗しました.
req.flash ステートメントの 1 つを削除したり、2 つの配列の代わりに文字列引数を 1 つだけ渡したりしても、この問題は解決されません。