UPDATE ROUTE (EDIT & UPDATE)
INDEX.JS
// EDIT ROUTE
app.get("/listings/:id/edit", async (req, res) => {
let { id } = req.params;
const listing = await Listing.findById(id);
res.render("listings/edit.ejs", { listing });
});
// UPDATE ROUTE
app.put("/listings/:id", async (req, res) => {
let { id } = req.params;
await Listing.findByIdAndUpdate(id, { ...req.body.listing });
res.redirect(`/listings/${id}`);
});
EDIT.EJS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Edit Listing</title>
</head>
<body>
<h2>EDIT listing</h2>
<form method="POST" action="/listings/<%=listing._id%>?_method=put">
<input name="listing[title]" type="text" value="<%=listing.title%>" />
<br />
<br />
<textarea name="listing[description]" type="text"><%=listing.description%>
</textarea
><br />
<br />
<input
name="listing[image]"
type="text"
value="<%=listing.image%>"
/><br />
<br />
<input
name="listing[price]"
type="number"
value="<%=listing.price%>"
/><br />
<br />
<input
name="listing[location]"
type="text"
value="<%=listing.location%>"
/><br />
<br />
<input
name="listing[country]"
type="text"
value="<%=listing.country%>"
/><br />
<br />
<button>save</button>
</form>
</body>
</html>
TO METHOD OVERRIDE:const methodOverride = require("method-override");



Comments
Post a Comment