Javascript 如何使用Node和Mongoose添加具有更新功能的按钮
我已经创建了一个带有事件的mongoose db,每个事件都在一个引导卡中。我正在试图找出一种方法,如何将管理员重定向到一个页面,在那里他可以更新事件卡并保存到我的Javascript 如何使用Node和Mongoose添加具有更新功能的按钮,javascript,node.js,express,mongoose,crud,Javascript,Node.js,Express,Mongoose,Crud,我已经创建了一个带有事件的mongoose db,每个事件都在一个引导卡中。我正在试图找出一种方法,如何将管理员重定向到一个页面,在那里他可以更新事件卡并保存到我的mongoose db 我的问题是,我已经有了一个带有删除操作的卡的表单,我需要能够有另一个。我的想法是添加一个链接,该链接将重定向到update_page.ejs,管理员可以在其中更改该事件的形式并保存它们 admin.ejs页面的代码 <% events.forEach( function (event) { %>
mongoose db
我的问题是,我已经有了一个带有删除操作的卡的表单,我需要能够有另一个。我的想法是添加一个链接,该链接将重定向到update_page.ejs
,管理员可以在其中更改该事件的形式并保存它们
admin.ejs页面的代码
<% 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>
//Create new event route.
app.post("/create_event", function (req, res) {
const event = new Event({
title: req.body.ev_title,
description: req.body.ev_desc,
date: req.body.ev_date,
capacity: req.body.ev_cap,
});
event.save(function (err) {
if (err) {
console.log(err);
} else {
res.redirect("/admin");
}
});
});
// Delete an event
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);
}
});
});
p.S我的删除路线的解决方案是否正确?
我为所有的细节感到抱歉,但我对这个完全陌生,而且这个项目的最后期限即将到来
谷歌搜索了所有这些方法,但现在文档对我来说似乎有点太技术化了。你可以简单地向节点应用程序添加另一条路径,如
// Update an event.
app.post("/update/:id", function (req, res) {
const _id = req.params.id;
const event = new Event({
title: req.body.ev_title,
description: req.body.ev_desc,
date: req.body.ev_date,
capacity: req.body.ev_cap,
});
event.findOne({ _id }, '_id title description date capacity', function (err, data) {
if (err) {
console.log(err);
} else {
res.render('path to create_data.ejs', { event : data });
}
});
});
在create_data.ejs文件中,用事件的值填充所有表单元素,如value=“”。
注意:如果要在create_data.ejs文件中进行上述更改,请确保在create_事件路由中传递空白事件属性,如
// Create an event.
app.post("/create", function (req, res) {
res.render('path to create_data.ejs', { event : {});
});
现在,
在create_event.ejs文件中的create按钮上添加一个条件,如
<% if(_event.id){ %>
... Update button to save the updated event
<% }else{ %>
... Create button to create a new event
<% } %>
... “更新”按钮以保存更新的事件
... 创建按钮以创建新事件
最后,在admin.ejs文件中更改
<a href="/create_event" class="btn btn-primary">Update</a>
到
<a href="/update/<%=event._id%>" class="btn btn-primary">Update</a>
希望这能回答你的问题。我得到一个错误,事件没有定义