experss3中req.flash无法保存进res.locals里的解决办法
发布于 13 年前 作者 baiezone 10878 次预览 最后一次回复是 12 年前 来自
在app.js里用
app.use(function (req, res, next) { res.locals.error= req.flash(‘error’).length ? req.flash(‘error’) : null; next(); });
前端(如template.ejs)文件调用时用
<% if(locals.error) { %> <div class=“alert alert-error”> <%= locals.error %> </div> <% } %
不会输出任何东西
原因是req.flash(‘error’)执行一次就会消失。 所以在执行过req.flash(‘error’).length这句话后req.flash(‘error’)的内容已经消失就不会赋值给res.locals.error,在前端也就不会显示。
解决办法是先把req.flash(‘error’)用变量存下来
app.use(function (req, res, next) { //req.flash(‘error’);只执行一次,随后消失,所以要先保存进变量 var err = req.flash(‘error’); res.locals.error = err.length ? err : null; next(); });
12 回复
谢谢分享~ 如果有用session的话,flash里的内容默认是存到session里,也就是说
res.locals.error = req.session? req.session.error : null学习了。 谢谢分享~
你是怎么发现的?牛~
太牛了。。。
执行到
后台提示
这里有答案 http://www.cnblogs.com/meteoric_cry/archive/2012/07/27/2604890.html 注意上述的代码,app.use(flash());要放在session之前
太感谢了!!!
为什么我的res.locals会输出undined? 求解
第一行的变数次序错了,是
function(req, res, next)…@alvis 恩,到后来无意间发现了这个,
太感谢了,弄了好久这个东西,原来是这个原因
谢谢分享~~