Nodejs 和 Handlebars - 列表在刷新时复制,而不是刷新

Nodejs and Handlebars - list duplicating on refresh, instead of refreshing

我一直在研究 Handlebars 模板。当前的做法是一个简单的待办事项列表。在第一次加载时它很好,但如果我刷新我的页面,它实际上并没有刷新。相反,它复制我的 GET 的结果并将它们附加到列表中。

所以,第一次列表是这样的:

然后刷新后我得到:

index.js GET 方法

app.get('/', (req, res) => {
  let query = "select * from todos";
  db.query(query, function(err, rows) {
    if (err) throw err;
    rows.forEach(function(todo) {
      todos.push(todo.todo);
      console.log(todo.todo)
    })
    res.render('index', {
      todos
    });
  })
});

index.hbs

<h2>Here's some Todos</h2>
<ul id="list">
{{#each todos}}
  <li>{{this}}</li>
{{/each}}
</ul>

todos 似乎是一个全局变量,或者在 for 循环范围之外有效。对于每个查询,它都会在待办事项中添加现有的数据库项目。在调用循环之前确保待办事项是一个空列表:

if (err) throw err;
todos = [];
rows.forEach(function(todo) {
    todos.push(todo.todo);
    console.log(todo.todo)
})