nodejs删除路由警告/确认

时间:2018-05-05 10:11:54

标签: node.js rest mongoose destroy

我正在使用nodejs,express和mongoose构建一个网站。我在使用与这些评论相关联的用户的RESTful路由和注释时添加了音乐会。 当我来到DELETE路线时,我希望警告用户而不是直接删除评论。因此我正在使用bootstraps模式。

无论如何,这对于巡回赛本身来说效果很好,但是在与巡回赛相关的评论中,我得到了一个非常奇怪的行为。它不会删除所选评论,而是始终删除最早的评论。但这只是在我将bootstraps模式放入其中时,如果我没有删除正确的模态,即使我没有在删除表单上更改任何内容。

这是没有模态的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的巡回赛本身,我有完全相同的东西,并且它的工作正常。

有什么想法吗?

更新

@Neil你是对的。我的错误是,我检查了在实际删除按钮之前我“前进”的删除按钮。由于我想要这个“你确定”的功能,坚持单个注释的删除按钮不会触发帖子请求,它们将被模态内的删除按钮触发。

现在,如果我检查前面插入的删除按钮,我会在检查视图中看到三种不同的形式(一个接一个),并且所有这些形式都会触发不同的注释ID。但如果我点击它们,模态将打开,模态内的删除按钮始终指向相同的ID。

请看图片,模态删除按钮始终指向相同的表单,而单个删除按钮指向不同的表单。但是,我必须更改我的代码呢?在此处输入图像描述

0 个答案:

没有答案