In ExpressJS possiamo implementare i messaggi flash nei redirect HTTP utilizzando un modulo NPM specifico.

connect-flash è un modulo che di fatto ci aiuta ad aggiungere una feature già presente in framework come Laravel, ossia il redirect HTTP con un messaggio da mostrare nelle view.

Questo modulo si basa sulle sessioni che possiamo creare e gestire con il modulo express-session. Per usarlo in Express, creiamo quindi una sessione e poi includiamo il modulo come middleware.

'use strict';

const express = require('express');
const session = require('express-session');
const flash = require('connect-flash');

const app = express();

app.use(session({
  secret: 'secret key',
  resave: false,
  saveUninitialized: false
}));

app.use(flash());

Il middleware aggiunge il metodo getter/setter flash() all'oggetto request. Usato come setter, possiamo impostare un messaggio in questo modo.

app.get('/logout', (req, res) => {
    req.flash('message', 'You are now logged out.');
    res.redirect('/');
});

Il messaggio è composto da una chiave (nell'esempio è message) e da un valore. Volendo si possono aggiungere più valori usando un array.

req.flash('message', ['You are now logged out.', 'Login']);

Quindi possiamo reperire il messaggio usando lo stesso metodo come getter passando come unico argomento la chiave.

app.get('/', (req, res) => {
    res.render('index', { message: req.flash('message') });
});

Nelle view possiamo mostrare il messaggio in questo modo:

<% if (message) { %>
    <div class="alert alert-info"><%= message %></div>
<% } %>

In conclusione, questo modulo si rivela estremamente efficace per implementare una feature molto utile quando si effettuano dei redirect HTTP e non si vuole usare una query string.