gpt4 book ai didi

mysql - for (... in ...) 循环在 Node.js 中不起作用

转载 作者:行者123 更新时间:2023-11-29 11:08:47 25 4
gpt4 key购买 nike

我正在学习在 Node.js 中使用 mysql 模块,因此我将其与 ExpressMustache 一起使用来渲染 MySQL 表并想出了这个:

var express = require('express');
var app = express();

var mu2 = require('mu2');
mu2.root = __dirname + '/views';

var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
port: 3306,
database: 'breakthrough'
});

con.connect(function (err) {
if (err) {
console.log('Error connecting to database:\n' + err);
return;
}
});

app.get('*', function (req, res) {
var tableHTML;
function renderTable(rows) {
tableHTML = "<table>";
for (var row in rows) {
tableHTML += "<tr>";
for (var cell in row) {
tableHTML += ("<td>" + cell + "</td>");
}
tableHTML += "</tr>";
}
tableHTML += '</table>';
}
con.query('SELECT * FROM drivers', function (err, rows){
if (err) { throw(err); }
renderTable(rows);
htmlStream = mu2.compileAndRender('frontPage.html', {table: tableHTML});
htmlStream.pipe(res);
});
});

app.listen(8080, function () {
console.log("Listening on port 8080.");
});

但是结果表只显示零,每行一个:

<table>
<tr><td>0</td></tr>
<!-- tr repeated for each row in rows -->
</table>

一些读物表明,当前在 Node.js 中迭代对象是相当有问题的。有什么方法可以对 Node.js 对象进行延迟迭代吗?

最佳答案

看起来 rows 是一个数组(根据 https://www.npmjs.com/package/mysql ),所以当你这样做时:

for(var row in rows)

row 只接受索引而不接受值,这就是为什么你的第二个 for 循环是错误的。另外只取索引而不取值

将其更改为:

for (var row in rows) {
tableHTML += "<tr>";
for (var cell in rows[row]) {
tableHTML += ("<td>" + rows[row][cell] + "</td>");
}
tableHTML += "</tr>";
}

但是使用 for in 循环数组并不是一个好主意,请参阅 Why is using "for...in" with array iteration a bad idea?

用途:

     for (var i = 0; i < rows.length; i++) {
tableHTML += "<tr>";
for (var cell in rows[i]) {
tableHTML += ("<td>" + rows[i][cell] + "</td>");
}
tableHTML += "</tr>";
}

关于mysql - for (... in ...) 循环在 Node.js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40969804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com