Удаление данных из БД

Давайте теперь удалим запись из БД, указав в параметре маршрута ее id.

Пусть у нас есть маршрут, в котором переменная del передается как параметр:

app.jsapp.get('/remove/:del', async function(req, res) {
  res.render('delete');
});

Пусть этот параметр будет содержать информацию о id юзера, которого нужно удалить. После объявления переменной del передадим ее в SQL запрос через интерполяцию как ${del}:

app.jsapp.get('/remove/:del', async function(req, res) {
  let del = req.params.del;
  let query = `DELETE * FROM users WHERE id=${del}`;
  
  res.render('delete');
});

Было бы удобно вывести на страницу с представлением сообщение об успешном удалении или появлении ошибки. Для этого объявим переменную message, которая сначала будет пустой. Далее пропишем конструкцию try-catch. В блоке try будут объявлены переменные results и fields. При успешном выполнении операции в сообщение передастся информация о том, с каким id был удален юзер. В случае возникновения ошибки, ее текст также передастся в представление:

app.jsapp.get('/remove/:del', async function(req, res) {
  let del = Number(req.params.del);
  
  let query = `DELETE FROM users WHERE id=${del}`;
  let message = '';
        
  try {
    let [results, fields] = await connection.query(query);
    message = `user with id=${del} is deleted`;
  } catch (error) {
    message = error.message;
  }
  
  res.render('delete', {message: message});
});

В файле представления delete.hbs пропишем код с переменной message:

views/delete.hbs<p>{{ message }}</p>
Задание 1

Сделайте так, чтобы в адресной строке можно было отправить GET запрос с id юзера и этот юзер удалялся из БД.

Задание 2

Модифицируйте предыдущую задачу так, чтобы на странице были ссылки для удаления каждого юзера:

html<a href="/remove/1">user1</a>
<a href="/remove/2">user2</a>
<a href="/remove/3">user3</a>

Ссылки, конечно же, должны формироваться в цикле из полученных из БД данных.

Задание 3

Модифицируйте предыдущую задачу так, чтобы у вас был следующий HTML код:

html<ul>
  <li>user1 <a href="/remove/1">удалить</a></li>
  <li>user2 <a href="/remove/2">удалить</a></li>
  <li>user3 <a href="/remove/2">удалить</a></li>
</ul>
Задание 4

Модифицируйте предыдущую задачу так, чтобы у вас был следующий HTML код:

html<table>
  <tr>
    <th>id</th>
    <th>name</th>
    <th>age</th>
    <th>salary</th>
    <th>delete</th>
  </tr>
  <tr>
    <td>1</td>
    <td>user1</td>
    <td>23</td>
    <td>400</td>
    <td><a href="/remove/1">удалить</a></td>
  </tr>
  <tr>
    <td>2</td>
    <td>user2</td>
    <td>25</td>
    <td>500</td>
    <td><a href="/remove/2">удалить</a></td>
  </tr>
  <tr>
    <td>3</td>
    <td>user3</td>
    <td>23</td>
    <td>500</td>
    <td><a href="/remove/3">удалить</a></td>
  </tr>
</table>