【问题标题】:Javascript push object into array not workingJavascript将对象推入数组不起作用
【发布时间】:2015-12-02 08:31:31
【问题描述】:

我使用node mirc从mysql中检索数据

然后我想将数据转换为数组,使用下面的代码:

function getQuestion (arr{
    var obj = {};

    connection.connect();
    connection.query("SELECT * FROM quiz", function (err, rows, fields) {
        if (err) throw err;

        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            obj = {"id":row.id, "question":row.question, "answers":row.answers.split(", ")};
            f100.push(obj);
        };
    });
    connection.end();
}
f100 = [];
getQuestion();
console.log(f100);

但是,它只打印[]

【问题讨论】:

  • 通过在 for each 语句之后放置一个 console.log() 语句来检查是否正在检索任何行,以查明问题的确切位置。
  • 因为 JS 异步行为!!
  • @YahyaUddin 检索到的数据没有问题,我已经测试过了

标签: javascript arrays node.js object


【解决方案1】:

由于.query()'s async 行为,它需要一些时间来执行,但您在调用函数后正在执行日志。您需要将日志与.query()函数的回调一起放置。

function getQuestion (arr{
    var obj = {};

    connection.connect();
    connection.query("SELECT * FROM quiz", function (err, rows, fields) {
        if (err) throw err;

        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            obj = {"id":row.id, "question":row.question, "answers":row.answers.split(", ")};
            f100.push(obj);
        };

        // do log here
        console.log(f100);
    });
    connection.end();
}
f100 = [];
getQuestion();

【讨论】:

    【解决方案2】:

    connection.query 是异步的,所以我建议在connection.query 回调中消除f100。如果您想在完成填充后对f100 执行某些操作,则需要从连接查询回调内部将其传递给另一个函数。示例:

    connection.query("SELECT * FROM quiz", function (err, rows, fields) {
        if (err) throw err;
    
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            obj = {"id":row.id, "question":row.question, "answers":row.answers.split(", ")};
            f100.push(obj);
        };
    
        console.log(f100); // should console out correctly here
        handleArray(f100); // passes in f100 to a new function
    });
    

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2015-01-04
      • 2015-10-19
      • 1970-01-01
      相关资源
      最近更新 更多