본문 바로가기
TIL/TIL

Web page => 라우터(id) => 컨트롤러(id) logic => render page

by koreashowme 2020. 2. 9.

web page 버튼 클릭 => 라우터 (서버) => 컨트롤러 logic => render page

 

 

 1. Delete Video 버튼을클릭 -> 

 

videoRouter.get(routes.deleteVideo(),videosDeleteController);

 

2. 라우터 파일에 있는 deleteVideo 실행 -> 

*const DELETE_VIDEO = "/:id/delete";

*deleteVideo: id => {

  if (id) {

    return `/videos/${id}/delete`;

} else {

  return DELETE_VIDEO;

  }

}

 

videoRouter.js파일에 있는 videoRouter.get(routes.deleteVideo(), deleteVideo); 에서routes.deleteVideo()으로 경로 인식하여 url에있는 id를 파라미터로 받고 ->

*Getting parameter id from URL

 

videoController.js파일 안에 있는 delete에 대한 Controller가 실행된다.

 

export const videosDeleteController = async (req, res) => {

  const {

     params: { id }

    } = req;

  try {

  await VideoModel.findOneAndDelete({ _id: id });

  } catch (error) {

  console.log(error);

  }

  res.redirect(routes.home);

  };

 

3. Rendering the page

 

==============================================================

 

1. findById (정보(데이터를)를 Id를 통해서 찾아라)

params 통해 id를 불러오고,

해당 데이터를 id 통해서 불러온 후,

 

found 정보(데이터) 'Model'을  const video 변수에 넣는다

const {params: {id} } = req;

 

const video = await Model.findById(id)

 

2. findOneAndUpdate (1:1 Mapping 업데이트)

const {params: {id} } = req;

 

findOneAndUpdate 는 params로 id를 불러오지만,

update를 하려면 이미 있는 것을 => 새로운 것으로 바꾸는 단계에서 { _id : id }를 사용한다.

여기서 'id'는 params로 불러온 id이고, 해당 id에 대한 값들을 '_id'다가 새로운 값을 update한다. 

'TIL > TIL' 카테고리의 다른 글

WEBPACK  (0) 2020.02.11
regular expression and option  (0) 2020.02.10
Absolute vs Relative Paths/LINKS & Express _id  (0) 2020.02.08
CLI program, npm i -g, process.argv  (0) 2020.01.24
노드 JS는 서버가 아닌 런타임.  (0) 2020.01.24

comment