nodejs удаляет предупреждение / подтверждение маршрута - PullRequest
0 голосов
/ 05 мая 2018

Я создаю сайт с nodejs, express и mongoose. У меня есть концерты, которые будут добавлены при использовании маршрутов RESTful и комментариев пользователей, связанных с этими комментариями. Когда я прихожу к маршруту УДАЛИТЬ, я хочу, чтобы пользователь предупреждался, а не удалял комментарий напрямую. Поэтому я использую модальные бутстрапы.

Во всяком случае, для турникетов это работало очень хорошо, но в комментариях, связанных с турникетами, я получаю очень странное поведение по этому поводу. Вместо удаления выбранного комментария он всегда удаляет самый старый комментарий. Но это ТОЛЬКО если я вставлю модальный бутстрап, без модального он удалит правильный, хотя я ничего не меняю в форме удаления.

Вот форма ejs без модала (удаляет выбранный комментарий):

   <form action="/tourdates/td/<%=concert._id%>/comments/<%=comment._id%>?_method=DELETE" method="POST" class="deleteForm">
    <input type="submit" class="btn btn-danger btn-sm" value="Delete">
  </form>

Это тот же код с модальным (всегда удаляйте самый старый комментарий вместо выбранного):

<form action="/tourdates/td/<%=concert._id%>/comments/<%=comment._id%>?_method=DELETE" method="POST" class="deleteForm">
    <a class="btn btn-danger btn-sm" data-toggle="modal" href="#collapseDelete" role="button" data-target="#deleteConcertComment">Delete</a>
    <div class="modal fade" id="deleteConcertComment" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
      <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalCenterTitle">Delete Komment?</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
            Are you sure?
          </div>
          <div class="modal-footer">
            <button class="btn btn-secondary btn-sm" data-dismiss="modal">Cancel</button>
            <input type="submit" class="btn btn-danger btn-sm" value="Delete">
          </div>
        </div>
      </div>
    </div>
  </form>

А вот мой маршрут:

router.delete("/tourdates/td/:id/comments/:comment_id", function(req, res) {
    Comment.findByIdAndRemove(req.params.comment_id, function(err) {
        if(err) {
            req.flash("error", "Es ist ein Fehler aufgetreten!");
            console.log(err);
        } else {
            req.flash("success", "Kommentar wurde gelöscht!");
            res.redirect("/tourdates/td/" + req.params.id);
        }
    });
});

Я действительно не понимаю, почему вторая версия удаляет самый старый комментарий в базе данных вместо выбранного. И, как я сказал, у меня есть то же самое для самих турдатов, использующих route / tourdates / td /: id, и там все работает просто отлично.

Есть идеи?

Обновление:

@ Нейл, ты прав. Моя ошибка заключалась в том, что я проверил кнопки удаления, которые я «прорезал» перед фактической кнопкой удаления. Так как я хочу эту функцию «Вы уверены», кнопки удаления, привязанные к отдельным комментариям, не будут запускать запрос на публикацию, они должны быть вызваны кнопкой удаления внутри модального окна.

Теперь, если я проверяю кнопки удаления, расположенные впереди, я вижу три разные формы (одну за другой) в моем окне проверок, и все они вызывают разные идентификаторы комментариев. Но если я нажму на них, модал откроется, и кнопка удаления внутри модала всегда будет указывать на один и тот же идентификатор.

Пожалуйста, смотрите рисунок, кнопка модального удаления всегда указывает на одну и ту же форму, в то время как отдельные кнопки удаления указывают на разные формы. Но что я должен изменить в своем коде тогда? введите описание изображения здесь

...