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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js mysql循环只显示最后一个条目相关的知识,希望对你有一定的参考价值。

我已经看到这个问题并在这里得到了解答,但我似乎无法让它为我自己工作:我的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>
The console.log is showing each row correctly, but there is only one list item being displayed in the html.

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

答案

使用.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.

另一答案

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

以上是关于Node.js mysql循环只显示最后一个条目的主要内容,如果未能解决你的问题,请参考以下文章

For循环遍历数组仅显示最后一个值

Mysql 只输出最后循环数据

Node.JS MySql 在循环中等待预期结果

node.js,express - 在循环中以同步方式一个接一个地执行mysql查询

为啥我的 For 循环在 EJS 节点 js 中只返回一个值?

Node.js-在确认框中单击确定时如何删除条目