我有一个项目,我需要使用connect-flash,我使用视图引擎作为ejs。即使我配置一切都很好,在我看来,连接闪存不起作用。有人可以请我帮忙吗?
这里我如何定义会话,连接闪存和全局变量:
app.use(cookieParser());
//Express session middleware
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true
}));
//Connect flash middleware
app.use(flash());
//Global varibales
app.use(function (req, res, next) {
res.locals.error = req.flash('error');
res.locals.success = req.flash('success');
next();
});
以下是导出模块获取功能:
module.exports.xxx_index_get = function(req, res) {
xxx.findOne({
id: 'xxx'
}).then(xxx=> {
req.flash('success', 'user succesfulyl registered')
res.render('xxx/xxx', {
xxx
});
});};
以下是ejs文件:
<% if(success.length > 0) { %><div class="alert alert-success">
<%= success %> </div><% } %>
如果有人会帮忙的话,我会非常感激。我错过了什么吗?
答案 0 :(得分:2)
我认为您已经需要了Flash的所有基本信息。
在您的路线中包含以下代码
module.exports.xxx_index_get = function(req, res) {
xxx.findOne({
id: 'xxx'
}).then(xxx=> {
req.flash('success', 'user succesfulyl registered')
res.locals.message = req.flash();
res.render('xxx/xxx', {
xxx
});
});};
然后在您的视图中尝试使用类似这样的
<% if(locals.message){ %>
<div class="alert alert-success" role="alert">
<strong>Well done!</strong> <%=message.success%>
</div>
<% } %>
希望这对您有所帮助。
答案 1 :(得分:0)
这是另一种解决方案
//middlewares/flashMessage.js
exports.flashMessage = function (req, res, next) {
const successFlashMessageArr = req.flash('success');
const errorFlashMessageArr = req.flash('error');
res.locals.successFlashMessage = successFlashMessageArr[0];
res.locals.errorFlashMessage = errorFlashMessageArr[0];
next();
}
在app.js中使用此中间件
const flashMessageMiddleware = require('./middlewares/flashMessage');
app.use(flashMessageMiddleware.flashMessage);
在EJS文件中,您可以使用全局变量
<% if(successFlashMessage){ %>
<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%=successFlashMessage%>
</div>
<% } %>
<% if(errorFlashMessage){ %>
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%=errorFlashMessage%>
</div>
<% } %>
答案 2 :(得分:0)
您可以使用Daud Khan的示例,但是,在声明消息超出范围时,请使用<%- %>
您的消息外观示例:
<% if(successFlashMessage){ %>
<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%- successFlashMessage %>
</div>
<% } %>
<% if(errorFlashMessage){ %>
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%- errorFlashMessage %>
</div>
<% } %>