req.flash()
すべてのメッセージのフラットリスト、または特定のタイプのすべてのメッセージのフラットリストを提供することを目的としています。いずれにせよ、メッセージオブジェクト自体はタイプを教えてくれません。なぜなら、あなたはすでにそれを知っていると想定されているからです。ただし、これに裏打ちreq.flash()
されているreq.session.flash
場合は、独自の機能をロールバックできます。
まず、必要な情報を含むメッセージの独自のリストを作成して、それをビューに渡すことができるようにする必要があります。例えば、
var messagesByType = req.session.flash || {},
allMessages = [];
Object.keys(messagesByType).forEach(function(type) {
var messages = messagesByType[type] || [];
messages.forEach(function(msg) {
allMessages.push({ type: type, text: msg });
});
});
req.session.flash = {};
次に、allMessages
テンプレート内で利用できるようにしてください。例えば、
res.render('some-view', { messages: allMessages });
これにより、ビュー内で次のように繰り返すことができるものが得られるはずです。
for message in messages
p(class='alert-#{message.type}') #{message.text}