node.js - Express 3.0 req.flash?
coffeescript (5)
- EDITAR -
Escribí algunos middlware para hacer esto: https://npmjs.org/package/flashify
Entonces, desde el lanzamiento de Express 3.0, los cambios han eliminado req.flash ()
https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x (fuente)
Así que aquí está mi pregunta ahora. Han aconsejado usar los mensajes de solicitud de req.session en un local para mostrar un flash.
Entonces, para que una sesión sea accesible para la vista, debemos hacer lo siguiente:
nb: en coffee-script
app.locals.use (req,res) ->
res.locals.session = req.session
¿Cómo accederíamos a los datos de sesión desde la vista y luego lo borramos? No podemos borrar el contenido de la sesión después de que se haya visualizado la vista, pero no podemos borrarla porque no llegará a la vista, así que estoy un poco perdido en cuanto a cómo se podría solucionar este problema.
Además de connect-flash
y express-flash
, también hay flash
, que está hecho por el equipo expressjs (que considero un extra). Súper fácil de usar:
instalar:
npm i flash
app.js:
app.use(session()); // session middleware
app.use(require(''flash'')());
app.use(function (req, res) {
// flash a message
req.flash(''info'', ''hello!'');
next();
})
view.jade:
while message = flash.shift() // consume messages as jade reads them
a.alert(class=''alert-'' + message.type)
p= message.message
Observe cómo el código anterior los desplaza ; si solo lees la matriz, los mensajes flash siguen colgando en la sesión (lo cual es genial para los redireccionamientos).
Creo que simplemente movieron req.flash a req.session.messages
Desde el enlace de Tim arriba:
Este middleware se extrajo de Express 2.x, después de que Express 3.x eliminó el soporte directo para el flash. connect-flash devuelve esta funcionalidad a Express 3.x, así como a cualquier otro framework o aplicación compatible con middleware. +1 para la reutilización radical.
Express 2.x migrar a la página 3.x dice lo siguiente:
-
req.flash()
(solo use sesiones:req.session.messages = [''foo'']
o similar)
Instalar el middleware de connect-flash, requerirlo, luego
app.use(flash())
y tenga en cuenta que debe aparecer antes de la app.use(express.session...)
Puede usar el middleware connect-flash para agregar de nuevo la funcionalidad req.flash () a express 3.0.