javascript - 如何将 MySQL JSON 对象从 connection.query() 传递到 res.render()

标签 javascript node.js

正如标题所示,我在 connection.query() 函数之外从 MySQL 响应访问对象时遇到问题。

router.get('/', function(req, res) {

    var testimonials;

    // Running database queries
    connection.query('SELECT * FROM testimonials', function(err, rows, fields) {
        if (!err) {
            testimonials = rows;
            console.log(testimonials); // THIS WORKS
        }
        if (err) {
            console.log('Error performing database query.');
        }
    });


  res.render('index', {
      title: 'Title',
      description: 'Description in here.',
      testimonials: testimonials // THIS RETURNS UNDEFINED
  });
});

最佳答案

您应该将 res.render 放入回调函数中,例如:

router.get('/', function(req, res) {    
    var testimonials;

    // Running database queries
    connection.query('SELECT * FROM testimonials', function(err, rows, fields) {
        if (!err) {
            testimonials = rows;

            res.render('index', {
                title: 'Title',
                description: 'Description in here.',
                testimonials: testimonials // this will work!!!
            });
        }
        if (err) {
            console.log('Error performing database query.');
        }
    });
});

注意:当您在回调函数外部使用 testimonials 时,您会得到 undefined,因为 connection.query 方法是异步的,它将在您的 res.render 方法之后运行。

关于javascript - 如何将 MySQL JSON 对象从 connection.query() 传递到 res.render(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33170866/

相关文章:

node.js - 我如何在 React.js 中获取 http header

javascript - 一次运行 Angular 4 + Node API

c# - 我怎样才能得到按钮的命令参数?

javascript - 如何验证表单中每组至少选中了 1 个复选框?

javascript - Sequelize获取虚拟字段

javascript - Angular ,Socket.io : Emit an array of object

javascript - 咕噜 Jade 编译

javascript - 如何使用正则表达式验证 Javascript 中的字符串?

javascript - 使 HTML 表格中的所有列都可编辑,只有一列除外

javascript - page.evaluate() 不打印控制台消息