由于某些原因,会话闪存在我res.render()
时有效,但是当我尝试设置会话闪存然后重定向时,它不会显示。问题出现在else
子句中的联系方法中......
这是重定向期间记录到控制台的内容:
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{ info: [ 'Thanks we will return your message soon' ] }
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
正如您所看到的,消息肯定在那里,但看起来它被替换为空对象。
这是我的代码:
app.js
var flash = require('connect-flash');
// Grab sessions
var sessionFlash = function(req, res, next) {
res.locals.messages = req.flash();
console.log(res.locals.messages);
next();
}
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(viewHelpers());
app.use(express.bodyParser({ uploadDir : './' }));
app.use(expressValidator);
app.use(express.methodOverride());
app.use(express.cookieParser('keyboard cat'));
app.use(express.session({
secret: config.secret,
cookie: {
maxAge: 365 * 24 * 60 * 60 * 1000
},
store: new MongoStore(config.db)
}));
app.use(flash());
app.use(sessionFlash);
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
views/layout.jade
- if (typeof message !== 'undefined')
=message
controllers/index.js
function controllers(params) {
controllers.contact = function(req, res) {
if (errors) {
// This works as intended
req.flash('info', 'Please fix the errors below.');
res.render('contact', {
title : 'Contact -',
message: req.flash('info'),
errors: errors,
params: params
});
return;
} else {
// This doesn't work
req.flash('info', 'Thanks we will return your message soon');
res.redirect('/');
}
};
return controllers
}
module.exports = controllers;
答案 0 :(得分:0)
好吧,你正在重定向到'/',哪个服务器没有响应。
您的app.js
中没有app.get('/', function(req, res){...});
Flash消息是在同一客户端发出的两个请求之间存储在服务器上的消息,因此仅在下一个请求中可用。由于res.redirect('/');
无效,因此无法显示闪光灯。