迭代Nodejs MySQL结果集中的字段

时间:2016-02-27 03:41:51

标签: mysql json node.js multidimensional-array

我是一名相对节点的新手(老派程序员)

我有工作代码来获取结果集并解析行。我正在使用felx的node-mysql驱动程序。专门打印出色谱柱并不难。

connection.query('SELECT * FROM Company', function(err, rows, fields) {
    if (err) throw err;

    for (var i = 0; i < rows.length; i++) {
        theShit = "";
       theShit = theShit + ('| ' + rows[i].name + ' | ' + rows[i].address_zip);
        theEmail = theEmail + theShit + "<BR>";
}

我真正想做的是循环遍历字段而不必命名它们......我的直觉告诉我它将是rows[i].[j] ......或类似的东西。

这可能吗?

4 个答案:

答案 0 :(得分:4)

如果我理解你的问题(你不想每次都排[i] .name)

假设我的所有mysql数组都是对象,你可以使用For...of

所以你可以这样做:

connection.query('SELECT * FROM Company', function(err, rows, fields) {
if (err) throw err;

  for (var i = 0; i < rows.length; i++) {
    for (obj of row[i]) {
       //obj = whatever field its currently on (name, email, w/e)
       theShit = "";
       theShit = theShit + ('| ' + rows[i].name + ' | ' + rows[i].address_zip);
       theEmail = theEmail + theShit + "<BR>";
  }
}

答案 1 :(得分:3)

我能够通过以下代码解决这个问题。

Object.keys(result.rows[index]).forEach(function(key) {
  var val = result.rows[index][key];
  console.log('key is: ' + key);
  console.log('val is: ' + val);
});

答案 2 :(得分:1)

我不确定Mohd的代码是否可行但我确实得到以下代码可供我使用:

我的专栏标题......

theShit = "<TR>";
  for (var i = 0; i < fields.length; i++) {
    console.log(fields[i].name);
    theShit = theShit + ("<TH>" + fields[i].name + "</TH>");
  }

......并且对于每一行......

for (var i = 0; i < rows.length; i++) {
    theShit = "<TR>";
    // hardcoded way -> theShit = theShit + ('| ' + rows[i].name + ' | ' +  rows[i].address_zip);
    myObj = rows[i];
    for( var j in myObj ) {
      if (myObj.hasOwnProperty(j)) {
        theShit = theShit + ("<TD>" + myObj[j] + "</TD>");
      }
    }

答案 3 :(得分:0)

在从MySQL查询成功获取结果之后,我使用下面的代码片段通过迭代RowDataPacket提取数据


if(error) {

    }
    else{
            Object.keys(results).forEach(function(key) {
            var result = results[key];      
            console.log(result.title,result.body,result.id);   
    });
}