全局变量中的数据未更新

时间:2014-03-28 21:07:41

标签: node.js

exports.index = function(req, res) {
     var names = [];
     connection.query('SELECT * from shares', function(err, rows) {
        if (err)
          console.log('error in execution...');
        else {
          names = []
          for ( var i in rows) {
            names.push(rows[i].title);
          }
        }
     });
    //var names = heroes.map(function(p) { return p.name; });
     console.log('names : ' + names);
    res.render('index', { heroes: names });
};

在上面的代码中,我想在函数末尾打印name的值。它的打印没什么。有人能告诉我如何解决?

1 个答案:

答案 0 :(得分:1)

您需要将res.render和控制台日志放入查询中的函数回调中。在您调用console.log时,数据库没有返回值,因为它是异步的。

exports.index = function(req, res) {
     var names = [];
     connection.query('SELECT * from shares', function(err, rows) {
        if (err)
          console.log('error in execution...');
        else {
          names = []
          for ( var i in rows) {
            names.push(rows[i].title);
          }
         console.log('names : ' + names);
         res.render('index', { heroes: names });
        } 
     });
    //var names = heroes.map(function(p) { return p.name; });

};