Как удалить строки данных с помощью sequenceize?

Итак, у меня есть следующий маршрутизатор в файле мопса с именем книги.js, в этом маршрутизаторе я использую Sequelize ORM, чтобы найти строку данных на основе идентификатора, чтобы удалить

    /* - Deletes a book. Careful, this can’t be undone. 
It can be helpful to create a new “test” book to test deleting.

create the post /books/:id/delete route*/
router.post('/:id/delete', function(req, res, next){
  Book.findOne({where: {id: req.params.id}}).then(function(book){
    return book.destroy();
  }).then(function(){
    res.redirect('/books/');  
  })
});

это форма внутри файла pug с именем обновление-book.pug, где у меня есть кнопка, которая после нажатия должна удалить строку данных и перенаправить на /books

form(action = "/books/" + book.id , method = "post" onsubmit = "return confirm('Do you really want to delete this book?');")

Как только я нажимаю кнопку удаления, я получаю код состояния 200 (ok), но мой браузер остается на той же странице.

Как удалить строки данных с помощью sequenceize?

может кто-нибудь помочь? для справки это мой репозиторий https://github.com/SpaceXar20/sql_library_manager-обновлено

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
8 825
4

Ответы 4

Вы определили форму с методом «POST», а ваш маршрутизатор ожидает метод «DELETE». Поэтому либо измените свой маршрутизатор, чтобы он принимал метод «POST», либо сделайте запрос AJAX с методом «DELETE».

Я обновил свой пост, я изменил свой код, но у меня все еще есть некоторые проблемы

Erik L 12.02.2019 08:07

router.delete('/:id/delete', async (req, res, next) => {
  let book = await Book.findOne({where: {id: req.params.id}}).catch(e => {
     console.info(e.message)
  })
  if (!book){
    console.info("err");
  }
  book.destroy();
  res.redirect('/books');
});

я изменил свой пост

Erik L 12.02.2019 08:07

Зачем использовать два отдельных запроса, когда внутри функции уничтожения сиквела можно поместить условие? А в ответ получаешь количество удаленных записей и можешь поставить там галочку, удалилось что-то или нет.

поскольку вы используете оператор возврата, ваш код должен быть:

try{
  await Book.destroy({where:{id:req.params.id})
   res.redirect('/')

 }
 catch(e){
  console.info(e)
   // handle error better
 }

также не нужно искать и потом удалять этот запрос находит и удаляет автоматически

Другие вопросы по теме