추가로 상품 삭제 기능을 하나 만들어 보았다.
만든 내용중에 상품을 삭제하는 내용이 없어서 직접 만들어 보았다.
일단 상품을 삭제하는 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가 출력되고 홈으로 갈수있는 버튼이 만들어 진다.
이렇게 상품삭제 기능을 다 만들었다.