Почему вы получаете сообщение об ошибке:
Элемент ссылки: a(class='button' href='/todos/'+val._id) delete
будет отображать элемент ссылки следующим образом: <a class='button' href='/todos/5e570f67ed9efba99c938719'>delete</a>
(при условии val._id
- 5e570f67ed9efba99c938719
).
Нажатие на эту ссылку не приведет к удалению задачи, но вместо этого откроет вам страницу, URL-адрес которой выглядит примерно так: /todos/5e570f67ed9efba99c938719
, и это приведет к тому, что клиентское приложение сделает запрос GET
на ваш сервер для этого. маршрут. Поскольку у вас нет обработчика маршрута, соответствующего запрошенному маршруту из клиентского приложения на сервере, вы получаете сообщение об ошибке: Cannot GET /todos/5e570f67ed9efba99c938719.
Исправление
Чтобы удалить задачу что вам нужно сделать, это добавить прослушиватель событий к ссылке, чтобы при щелчке по ней вместо простого перенаправления на какую-либо страницу выполнялся обработчик, присоединенный к прослушивателю событий, чтобы обратиться к вашему серверу и удалить задачу. , Пример реализации:
// Add some more properties to the delete button
a(class='button delete-todo' data-articleid=val._id href='/todos/'+val._id) delete
И в теге <script />
или javascript, который будет загружен с шаблоном pug, добавьте:
// SOURCE: https://github.com/elvc/node_express_pug_mongo/blob/master/public/js/main.js
$(document).ready(function(){
$('.button.delete-todo').on('click', function(e){
e.preventDefault();
$target = $(e.target);
const id = $target.attr('data-articleid');
$.ajax({
type: 'DELETE',
url: '/todos/'+id,
success: function (response){
// Whatever you want to do after successful delete
console.log(response);
alert('Deleting article');
},
error: function(err){
// Whatever you want to do after a failed delete
console.error(err);
}
});
});
});