Nodejs and Handlebars - дублирование списка при обновлении вместо обновления - PullRequest
0 голосов
/ 30 ноября 2018

Я играл с шаблонами 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>

1 Ответ

0 голосов
/ 30 ноября 2018

Кажется, todos является глобальной переменной или допустимой вне области цикла for.Для каждого запроса он добавляет существующие элементы БД в задачи.Перед вызовом цикла убедитесь, что задачи являются пустым списком:

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