Te sugerimos que revises esta respuesta en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Este Gist debería responder a su pregunta:
https://gist.github.com/raddeus/11061808
en el archivo de configuración de su aplicación:
app.use(flash());
Póngalo justo después de configurar su sesión y el analizador de cookies. Eso es realmente todo lo que deberías necesitar para usar flash.
Tu estas usando:
req.flash('signupMessage', anyValue);
antes de redirigir a /registrarse, ¿verdad?
Aquí hay un pequeño dato divertido que actualmente uso para un sitio personal (en mi archivo de aplicación principal):
app.use(function(req, res, next)
res.locals.success_messages = req.flash('success_messages');
res.locals.error_messages = req.flash('error_messages');
next();
);
Ahora cada vista tendrá acceso a cualquier mensaje de error o éxito que muestre. Funciona bien para mí.
Una última cosa (esto es quisquilloso, pero puede que adquieras algo de conocimiento). Si cambias:
<% if (message.length > 0) { %>
para:
<% if (message) { %>
Funcionará de la misma manera, pero no fallará si el mensaje no está definido. Las cadenas indefinidas y vacías se consideran valores “falsos” en javascript.
EDITAR: Mi configuración de cookies/sesión/flash es la siguiente:
app.use(cookieParser('secretString'));
app.use(session(cookie: maxAge: 60000 ));
app.use(flash());
Tal vez ayudaría ver el código de configuración de su aplicación. También tenga en cuenta que usar app.configure ya no es necesario en Express 4.
Edición final: https://gist.github.com/raddeus/11061808
Ese es un ejemplo de trabajo. Vaya a localhost:3000 después de ejecutar esa aplicación y debería ver ['it worked']
en tu pantalla
https://gist.github.com/brianmacarthur/a4e3e0093d368aa8e423
Yo también estaba inicialmente confundido por los mensajes flash en Express 4. La confusión para mí surgió en parte de la distinción entre el concepto de mensajería flash, un mensaje temporal disponible para una plantilla, y las diversas implementaciones de mensajería flash, que incluyen express-flash
otros módulos y middleware personalizado.
Solo para ampliar la excelente respuesta de Thad Blankenship anterior, creé un Gist para el principiante que incluye dos enfoques para los mensajes flash: el express-flash
módulo y middleware personalizado, renderizados en jade, ejs o handlebars.
El archivo Léame incluye detalles sobre el captador:req.flash(type)
–y colocador–req.flash(type, message)
–métodos expuestos por express-flash
y en qué se diferencian de la explotación de los res.locals
y req.session
objetos expuestos por express-session
en el middleware personalizado.
Para mostrar el mensaje flash, debe instalar el módulo flash en su proyecto usando cmd.
npm install express-session --save
npm install cookie-parser --save
npm install connect-flash --save
Ahora debe agregar código al archivo app.js para acceder a esos módulos. Agreguemos estos códigos.
var session = require('express-session');
var cookieParser = require('cookie-parser');
var flash = require('connect-flash');
var app = express();
app.use(cookieParser('secret'));
app.use(session(cookie: maxAge: 60000 ));
app.use(flash());
Ahora generar mensaje flash
req.flash('success', 'Registration successfully');
res.locals.message = req.flash();
Para mostrar el mensaje flash en el archivo de vista, use el código
<% if(locals.message) %>
Well done! <%=message.success%>
<% %>
Aquí puedes ver las reseñas y valoraciones de los usuarios
Agradecemos que desees añadir valor a nuestro contenido informacional tributando tu veteranía en las crónicas.