Deleting Reviews

 PULL OPERATOR IS USED TO DELETE BY PULLING THE WANTED REVIEW FROM REVIEWS ARRAY.

// DELETE REVIEW
app.delete("/listings/:id/reviews/:reviewId", async (req, res) => {
  let { id, reviewId } = req.params;

  await Listing.findByIdAndUpdate(id, { $pull: { reviews: reviewId } });
  await Review.findByIdAndDelete(id);
  res.redirect(`/listings/${id}`);
});

IN SHOW.EJS A BUTTON IS CREATED WHICH LEADS TO THE REQUIRED ROUTE.

 <h4>All Reviews</h4>
    <% for(review of listing.reviews) { %>

    <div class="card col-5 ms-3 mb-4">
      <div class="card-body">
        <p class="card-title"><b>Abhii</b></p>
        <p class="card-text"><%= review.comment %></p>
        <p class="card-text"><%= review.rating %> stars</p>
      </div>
      <form method="post" action="/listings/<%=listing._id%>/reviews/<%=review._id%>?_method=delete">
        <button class="btn btn-dark btn-small">Delete</button>
      </form>
    </div>
    <% } %>





Comments