Html 如何向button Node.js添加删除操作
我想向一个按钮添加一个删除功能,该按钮是卡的一部分,卡被封装在一个表单中,这是我所能得到的:Html 如何向button Node.js添加删除操作,html,css,node.js,ejs,crud,Html,Css,Node.js,Ejs,Crud,我想向一个按钮添加一个删除功能,该按钮是卡的一部分,卡被封装在一个表单中,这是我所能得到的: <form class="form-events" action="/delete" method="post"> <% events.forEach( function (event) { %> <div class="card col-lg-3" style=&qu
<form class="form-events" action="/delete" method="post">
<% events.forEach( function (event) { %>
<div class="card col-lg-3" style="width: 18rem;">
<img class="card-img-top">
<div class="card-body">
<h5 class="card-title"><%= event.title %></h5>
<p class="card-text"><%= event.description %></p>
<p class="card-text"><%= event.date %> </p>
<p class="card-text"><%= event.capacity %></p>
<a href="#" class="btn btn-primary">Update</a>
<button onclick="this.form.submit()" value="<%= event._id %> " name="deletebtn" class="btn btn-danger">Delete</button>
</div>
</div>
<% }); %>
</form>
当我按下“删除”按钮时,出现此错误:
好的,这就是我解决问题的方法。我不确定这是否正确,但它是有效的 表单管理ejs
// Delete an event
app.post("/delete", function (req, res) {
const deletedItemId = req.body.deletebtn;
Event.findByIdAndRemove(deletedItemId, function (err) {
if (!err) {
console.log("Successfully deleted");
res.redirect("/admin");
} else {
console.log(err);
}
});
});
现在它在数据库中运行得很好,但我在谷歌上搜索了大部分东西,看看它们在哪里可以使用
<% events.forEach( function (event) { %>
<form class="form-events" action="/delete" method="post">
<div class="card col-lg-3" style="width: 18rem;">
<img class="card-img-top">
<div class="card-body">
<h5 class="card-title"><%= event.title %></h5>
<p class="card-text"><%= event.description %></p>
<p class="card-text"><%= event.date %> </p>
<p class="card-text"><%= event.capacity %></p>
<a href="/create_event" class="btn btn-primary">Update</a>
<button name="deleteBtn" value="<%=event._id%>" type="submit" class="btn btn-danger">Delete</button>
</div>
</div>
<% }); %>
</form>
路由的/**/
app.delete(“delete/:id”),函数()
/*表格*/
删除
我试过了,但又遇到了一些错误,回到了原来的版本,我真的不理解整个app.post,app.delete,因为你也使用了action/delete,然后你可以用mongoose删除它,我也不确定,但是对于HTML中的form方法,据说你只能使用post和put,这让我更加困惑……首先,我建议使用
collection.findonebyianddelete()
。其次,错误很明显是事件。_id
的类型不正确。您是否可以将事件的控制台输出包括在内。\u id
传递到请求时的样子。另外,您是使用Mongoose定义模式还是仅使用Node.js定义端点?调试时,页面源是否具有预期的ID值?在浏览器调试工具的POST请求中,是否包含预期的ID值?调试服务器端代码时,deletedetimid
是否具有您期望的值?在调试过程中,观察逻辑的每一个步骤来确定发生意外事件的具体位置是很重要的。我在控制台中添加了一条消息,至于调试,我对这方面还很陌生,所以不知道怎么做。
<% events.forEach( function (event) { %>
<form class="form-events" action="/delete" method="post">
<div class="card col-lg-3" style="width: 18rem;">
<img class="card-img-top">
<div class="card-body">
<h5 class="card-title"><%= event.title %></h5>
<p class="card-text"><%= event.description %></p>
<p class="card-text"><%= event.date %> </p>
<p class="card-text"><%= event.capacity %></p>
<a href="/create_event" class="btn btn-primary">Update</a>
<button name="deleteBtn" value="<%=event._id%>" type="submit" class="btn btn-danger">Delete</button>
</div>
</div>
<% }); %>
</form>
app.post("/delete", function (req, res) {
const deletedItemId = req.body.deleteBtn;
Event.findByIdAndDelete(deletedItemId, function (err) {
if (!err) {
console.log("Successfully deleted");
res.redirect("/admin");
} else {
console.log(err);
}
});
});
/*for the route */
app.delete(“delete/:id”), function()
/*for the form */
<form method="POST" action="/delete/<%= event._id%>?_method=DELETE">
<button type="submit">Delete</button>
</form>