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");

app.use(methodOverride("_method"));



Comments