我正在使用名为“express-flash-2”(https://www.npmjs.com/package/express-flash-2)
的模块正如您在文档中看到的,有一个示例链接https://github.com/jack2gs/express-flash-2/tree/master/examples/express4
我的网站上有大约35条Flash消息,我创建了一个名为“flash.ejs”的部分文件,并将所有flash消息传递给它。
这是一个flash消息示例:
<div class="modal fade" id="error-box" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-md">
<div class="modal-content">
<div class="modal-header">
<a href="#" class="modal-close" data-dismiss="modal" aria-hidden="true"><i class="icon_close"></i></a>
<h4 class="modal-title">Error</h4>
</div>
<div class="modal-body modal-body-info">
<p>Server error, please try again.</p>
</div>
</div>
</div>
这个位于文件的底部:
<% if( flash.error){%>
$('#error-box').modal('show')
<%}%>
其中大约有35个具有不同的Flash消息名称(错误,成功,登录需要等) 所以基本上,当我调用res.flash('error','。')时,会显示此错误,并且一切都按预期工作。 (PS:我正在传递'。'作为第二个参数,因为我不想把信息放在其中,因为有时我想在触发时向客户端显示一个表单,并且它在服务器中看起来不太好传递整个表格作为第二个arg)
现在,这就是我想要实现的目标:
我想将所有消息插入到数据库(MySQL)中,并在调用其中一个消息时进行渲染。
我试着这样做:
app.use((req, res, next) => {
var flash_name = res.locals.flash
pool.getConnection((err, connection) => {
if(err){
res.flash('error', '.')
return res.redirect('/')
}
connection.query('SELECT * FROM flash WHERE flash_name = ?', flash_name, (err, rows) => {
if(err) return console.log(err)
//here I pass the "rows" to the view and render the message that I got from the database
next()
})
connection.release()
})
});
数据库有3列:flash_id,flash_name,flash_message 因此,每当res.locals.flash传递给数据库时,应从数据库返回其等效消息。 但是,我得到的只是数据库错误,因为在这里,当我执行console.log(flash_name)时,它记录了这个:{error:['。' ]}(当'错误'闪光被触发时)
问题是,我如何实现我的目标?