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