유튜브 클로닝 #6-3 CRUD (3) DELETE

이현정·2022년 4월 15일
1

🔖 강의 범위: #6.25

Preview

이번 시간까지 CRUD 의 Create, Read, Update 기능까지 만들며 배워보았다.
마지막 기능인 Delete 도 만들어보자.

핵심 개념

Model.findByIdAndDelete( )

https://mongoosejs.com/docs/api/query.html#query_Query-findOneAndDelete

강의 내용

원리는 간단하다. 지금껏 해왔듯 일정 url 로 이동하면 url에 있는 id 로 해당 비디오를 찾아 지우는 것.
mongoose 의 Model.findByIdAndDelete( ) 기능을 이용하면 된다.

step 1. delete 을 누르면 띄울 페이지를 만든다. (template)

// Template

a(href=`${video.id}/delete`) Delete Video →

step 2. 실제 경로를 만들어준다. (router)

// Router

videoRouter.get("/:id([0-9a-f]{24})/delete", deleteVideo );

step 3. 해당 경로로 이동했을 때 실행할 기능을 지정해 준다. (controller)

// Controller 

export const deleteVideo = async (req,res) => {
  const { id } = req.params;
  await Video.findOneAndDelete(id);
  return res.redirect("/");
};

끝.

추가 공부 ?

Model.findByIdAndDelete( ) vs.Model.findOneAndRemove() 의 차이

https://www.zerocho.com/category/MongoDB/post/579ecb1fc097d015000404dd

이 둘은 정말 약간의 차이가 있는데 대부분의 상황에서 타당한 이유가 없는 한 delete를 사용하라고 되어 있음.
몽고 db는 롤백이 안되서 remove를 하면 다시 되돌릴 수 없기에 remove보다 delete를 사용하라고 권장하는듯.

요약

  • 지금까지 배운 template, router, controller, db 지식을 모두 이용하여 CRUD 의 D(Delete) 기능을 만들어보았다.
  • mongoose 의 Model.findByIdAndDelete( ) 을 배웠다.

0개의 댓글