【问题标题】:Iterating through fields in a Nodejs MySQL result set遍历 Nodejs MySQL 结果集中的字段
【发布时间】: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 是你的答案。

标签: mysql json node.js multidimensional-array


【解决方案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);   
          });
      }
      

      【讨论】:

        猜你喜欢
        • 2020-07-12
        • 2012-06-05
        • 2010-12-17
        • 1970-01-01
        • 2011-11-30
        • 2017-10-23
        • 2019-02-18
        相关资源
        最近更新 更多