【问题标题】:Nodejs - Express - Mysql: render view after postNodejs - Express - Mysql:发布后渲染视图
【发布时间】:2013-09-29 23:42:41
【问题描述】:

我正在使用 express 从 mysql 数据库中插入/列出一些记录。一切正常(插入/选择),但插入完成后如何呈现列表功能?我是否必须重新调用 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();
};

【问题讨论】:

  • 您是作为实际页面还是作为 REST 端点访问 exports.create?还是别的什么?
  • 在 app.js 我有 app.post('/wall', wall.create); app.get('/wall', wall.list);

标签: mysql node.js express


【解决方案1】:

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

【讨论】:

  • 好的,谢谢你的回复Nitzan,我会再调查一下..:)
【解决方案2】:

我仔细阅读了文档,发现

res.redirect();

所以对于我的例子来说,它工作得很好

res.redirect('/wall');

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

【讨论】:

    猜你喜欢
    • 2017-12-07
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2017-04-22
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    相关资源
    最近更新 更多