Nodejs循环遍历mysql查询给出result = undefined

时间:2017-05-27 12:33:21

标签: mysql json node.js

我有一个Json对象,想要循环它。在我的循环中,我想执行一个select查询并将结果保存到另一个json数组。

所以我从一个循环开始,执行一个mysql查询,并希望只记录结果:

for (var x = 0; x < obj.length; x++) {
     var query = connection.query('SELECT Id, date FROM tbl1 WHERE Id LIKE '+ mysql.escape(obj[x].ident) +'; SELECT Id, date FROM tbl WHERE Id LIKE '+ mysql.escape(obj[x].ident) +' ORDER BY date DESC Limit 1 offset 1', function (error, results, fields) {
            if (error) {throw error;}
            if (!error) {
                console.log("resultset"+results); //<- Here I get the right result
                console.log("ID: "+results[0].Id); //<- UNDEFINED
                console.log("ID-LAST-entry: "+ results[1].Id); //<- UNDEFINED
                          } });

问题是对于展位结果(0和1)我得= UNDEFINED。

我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

根据results的值,您可以看到它是 array of objects而不是array arrays where each item is an object。 您需要迭代内部数组才能获得Id。请参阅下面的代码段。将结果解析为JSON,然后读取所需的数据。

if (!error) {

    var parsedResults = JSON.parse(JSON.stringify(results));
    var outerArraySize = parsedResults.length;

    for (var outerIndex = 0; outerIndex < outerArraySize; ++outerIndex) {
        var innerArraySize = parsedResults[outerIndex].length;
        for (var innerIndex = 0; innerIndex < innerArraySize; ++innerIndex)
            console.log("ID: " + parsedResults[outerIndex][innerIndex].Id);
    }
}