상품 삭제기능 추가

강현구·2022년 1월 19일

Node.js

목록 보기
18/19

추가로 상품 삭제 기능을 하나 만들어 보았다.
만든 내용중에 상품을 삭제하는 내용이 없어서 직접 만들어 보았다.
일단 상품을 삭제하는 api먼저 만든다.
product.js 파일안에 만들면 된다.

router.post("/products/delete", async (req, res) => {
  const { productId } = req.body;
  const finish = "삭제가 완료 되었습니다."

  const isProductsInProducts = await Products.find({ productId });
  if (isProductsInProducts.length > 0) {
    await Products.deleteOne({ productId });
  }

  res.render("home", {finish});
});

나는 이렇게 만들었다.
원래 delete 메소드로 받아야 하는데 진짜 너무 안받아져서 post로 받았다.
삭제하려눈 상품의 productId 입력하면 그 Id값을 찾아서 상품을 삭제하는 api이다.
isProductsInProducts 에 productId를 이용해 상품을 찾아서 넣어준다.
isProductsInProducts에 상품이 저장되어 있으면 데이터베이스에서 그 상품을 지워준다.
그리고 home이라는 템플릿에 finish를 넣어서 보내준다.
이제 api를 만들었으니 템플릿을 만들어 본다.
일단 templates에 delete.ejs를 만들어 준다.
그 만든 파일안에 html코드를 넣어준다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>JavaScript</title>
    <style>
      input, button { font-family: inherit; font-size: inherit; }
    </style>
  </head>
  <body>
    <h1>상품 삭제 페이지</h1>
    <form action="/api/products/delete" method="POST">
      <p>지우고 싶은 상품ID<input type="number" name="productId" required></p>
      <p><input type="submit" value="확인"></p>
    </form>
  </body>
</html>

저번과 마찬가지로 form action을 이용해서 넣어주었다.
지우고싶은 상품 ID를 입력하면 그 ID가 삭제api로 넘어가게 되고 api가 실행되면서 지워지게 된다.
이렇게 템플릿을 만들었으면 index.js파일에 가서 루트를 지정해준다.

app.get("/delete", (req, res) => {
  res.render("delete");
});

그리고 api에서 보내줄 home 템플릿을 만들어 준다.
templates 폴더 안에 home.ejs를 만들어서 넣어준다.
그리고 그 파일에 코드를 작성해준다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>JavaScript</title>
    <style>
      input, button { font-family: inherit; font-size: inherit; }
    </style>
  </head>
  <body>
    <%= finish %>
    <a href="/" class="btn btn-primary">홈으로</a>
  </body>
</html>

이렇게 작성 해주면 api에서 보내준 finish가 출력되고 홈으로 갈수있는 버튼이 만들어 진다.
이렇게 상품삭제 기능을 다 만들었다.

profile
초보개발자

0개의 댓글