我是一名相对节点的新手(老派程序员)
我有工作代码来获取结果集并解析行。我正在使用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]
......或类似的东西。
这可能吗?
答案 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);
});
}