Nodejs - Express - Mysql:post后的渲染视图

时间:2013-09-29 11:35:45

标签: mysql node.js express

我使用express来插入/列出来自mysql db的一些记录。一切正常(插入/选择),但如何在插入完成后呈现列表功能?我是否必须重新调用select语句?

var mysql = require('mysql');

exports.create = function(req, res) {
  var connection = mysql.createConnection({user: 'root', password: 'password', database: 'test'});
  connection.query('INSERT INTO wall (message) VALUES ("' + req.body.message + '")', function(err, result) {
    if (err)
      throw err
    // is this correct? <===
    connection.query('SELECT * FROM wall', function(err, rows) {
      if (err)
        throw err
      if (rows)
        res.render('wall', {title: 'Wall', data: rows});
    });
    // end
    connection.end();
  });
};

exports.list = function(req, res) {
  var connection = mysql.createConnection({user: 'root', password: 'password',      database: 'test'});
  connection.query('SELECT * FROM wall', function(err, rows) {
    if (err)
      throw err
    if (rows)
      res.render('wall', {title: 'Wall', data: rows});
  });
  connection.end();
};

2 个答案:

答案 0 :(得分:1)

是的,您必须再次SELECT,并且您的代码通常是正确的。我会重构list和你要问的部分之间的共同部分,我不会在源文件中列出用户和密码,并进行其他微小的修改,但通常是正确的。

答案 1 :(得分:0)

我更仔细地阅读文档,然后找到了

res.redirect();

所以对于我的例子,它可以正常工作

res.redirect('/wall');

向/ wall路由发出GET请求。获取消息列表时,数据将作为此路由。这对我来说没问题。