遍历 Nodejs MySQL 结果集中的字段

Posted

技术标签:

【中文标题】遍历 Nodejs MySQL 结果集中的字段【英文标题】:Iterating through fields in a Nodejs MySQL result set 【发布时间】:2016-06-10 11:24:47 【问题描述】:

我是一个相对节点新手(老派程序员

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

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

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

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

这可能吗?

【问题讨论】:

我相信this 是你的答案。 【参考方案1】:

如果我正确理解了您的问题(您不想每次都使用 rows[i].name)

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

所以你可以这样做:

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

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

【讨论】:

你在正确的轨道上......我只需要知道如何获取 obj 的值......因为我不知道字段名称......现在谷歌搜索...... .【参考方案2】:

我可以通过下面的代码解决这个问题。

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

【讨论】:

【参考方案3】:

我不确定 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>");
      
    

【讨论】:

【参考方案4】:

在成功从 MySQL Query 获取结果后,我使用下面的 sn-p 通过迭代 RowDataPacket 来提取数据


if(error) 

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

【讨论】:

以上是关于遍历 Nodejs MySQL 结果集中的字段的主要内容,如果未能解决你的问题,请参考以下文章

MySQL游标

MySQL游标

如何在 MySQL 中对两个结果集中的列求和

使用mysql在nodejs中进行分页

如何基于树遍历算法从这个结果集中生成树视图?

MongoDB:如何对 MySQL 字段关键字等结果中的记录进行排序 [重复]