Node.js mysql循环只显示最后一个条目

时间:2017-12-29 18:27:27

标签: javascript mysql node.js for-loop electron

我已经看到这个问题并在这里得到解答,但我似乎无法让它为自己工作:我的javascript mysql循环只显示数据库中的最后一个条目。我正在电子中构建一个简单的内部wiki,并且我试图列出一些存储在mysql数据库中的类别。



<script>
const mysql = require('mysql');
const marked = require('marked');
var db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'database'
});
db.connect();

$sqlnav = 'SELECT * FROM categories;'
db.query($sqlnav, function(error, rows, fields){
  if (error) throw error;
  for (var i = 0; i < rows.length; i++) {
    console.log(rows[i]);
    $('nav > ul').html('<li>' + rows[i].category + '</li>');
  }
});
</script>
<nav>
  <ul>
  </ul>
</nav>
&#13;
&#13;
&#13; console.log正确显示每一行,但html中只显示一个列表项。

其他一些答案表明,我只是在循环的每次迭代中覆盖相同的实例,我只是难以理解如何摆脱这种情况。我感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在for循环中构建并附加一个html字符串,然后在循环外调用$()。html。

答案 1 :(得分:0)

使用.append()代替.html(),这样您就可以每次都添加项目而不是覆盖它。

来自JQuery文档:

When .html() is used to set an element's content, any content that was in that element is completely replaced by the new content. Additionally, jQuery removes other constructs such as data and event handlers from child elements before replacing those elements with the new content.