遍历 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 结果集中的字段的主要内容,如果未能解决你的问题,请参考以下文章