Node.js nodejs删除路由警告/确认
我正在用nodejs、express和mongoose建立一个网站。在使用RESTful路由和与这些评论相关的用户评论时,我会添加一些音乐会。 当我进入删除路径时,我希望用户得到警告,而不是直接删除评论。因此,我使用引导模式 无论如何,这对tourdates本身来说效果很好,但是在与tourdates相关的评论中,我得到了一个非常奇怪的行为。它总是删除最早的注释,而不是删除选定的注释。但这只是如果我把引导模式放进去,没有模式它会删除正确的一个,即使我没有在删除表单上更改任何内容 以下是不带模式的ejs表单(删除所选注释): 我真的不明白为什么第二个版本会删除数据库中最早的注释而不是所选的注释。正如我所说的,我使用route/tourdates/td/:id对tourdates本身有完全相同的功能,在那里它工作得很好 有什么想法吗 更新: @尼尔,你说得对。我的错误是,我检查了删除按钮,我在实际的删除按钮之前“向前开槽”。因为我想要这个“你确定吗”功能,所以粘贴到单个评论的删除按钮不会触发post请求,它们应该由模式中的删除按钮触发 现在,如果我检查前面开槽的删除按钮,我会在我的检查视图中看到三种不同的形式(一个接一个),它们都会触发不同的注释id。但是如果我点击它们,模态就会打开,模态里面的删除按钮总是指向同一个idNode.js nodejs删除路由警告/确认,node.js,rest,mongoose,destroy,Node.js,Rest,Mongoose,Destroy,我正在用nodejs、express和mongoose建立一个网站。在使用RESTful路由和与这些评论相关的用户评论时,我会添加一些音乐会。 当我进入删除路径时,我希望用户得到警告,而不是直接删除评论。因此,我使用引导模式 无论如何,这对tourdates本身来说效果很好,但是在与tourdates相关的评论中,我得到了一个非常奇怪的行为。它总是删除最早的注释,而不是删除选定的注释。但这只是如果我把引导模式放进去,没有模式它会删除正确的一个,即使我没有在删除表单上更改任何内容 以下是不带模式的
请看图片,模式删除按钮始终指向同一表单,而单个删除按钮指向不同表单。但是我的代码需要修改什么呢?在此处输入图像描述可能不是删除操作本身,而是表单中的数据。很可能是由于某种原因,您在表单上用相同的id标记了每个注释。只需将鼠标悬停在链接上进行确认,然后查看正在处理模板的任何代码即可查看问题的根源。嗨,尼尔,谢谢您的提示。但当我检查第一条注释的形式时,它会在action=“…/id”中显示注释的id,这是每个注释上的不同id。
<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">×</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);
}
});
});