将flash消息传递到数据库(express.js + mysql)

时间:2018-02-15 21:04:41

标签: javascript mysql node.js express

我正在使用名为“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:['。' ]}(当'错误'闪光被触发时)

问题是,我如何实现我的目标?

0 个答案:

没有答案