MongoDB는 다목적용이고, document을 기반으로 한다. 현대의 애플리케이션 개발자를 위해 만들어진 분산 데이터 베이스이다.일반적으로 database는 document-base가 아니다. 보통 sqi-based이다. 행 기반이라고 할수 있는데 , 이게 무슨 뜻이
Mongoose에 대해 알아 보자 mongoose는 node.js와 mongoDB를 이어주는 다리이다. 많은 사람, 많은 기업에서 mongoose를 사용한다. mongoDB를 사용하고 그 작업을 javaScript를 쓴다면 mongoose는 필수 사항이다. ja
이제 본격적으로 database를 만들어 본다.CRUD는 비디오를 생성(Create), 읽기(Read ), 수정하기(Update ) 그리고 삭제하기(Delete) 를 말하는 거다. src 안에 models라는 폴더를 하나 만들어 준다. 그 안에 video.js파일을 만
video model을 만들기 위해서 먼저 mongoose를 mongoose에서 import해야한다.video.js그리고 model을 생성하기 전에 model의 형태를 정의해 줄 필요가 있다. model의 생김새를 말하는 거다. 보통 schema라고 알려져 있다.con
이전 파트에서 비디오 파일의 데이터 형식을 정의했다.그 다음 해당 형식을 가진 model을 만들었다. 그리고 해당 model을 default로 export 한 뒤 import해서 preload를 가능하게 만들었다. 이렇게 하는 이유는 model을 미리 compile또는
전 단계에서 하던 걸 이어서 해보도록 하겠다.mongoose는 Video.find({} 이 부분을 database에서 불러 올거다.그리고 database가 반응하면 mongoose는 이 function (error,videos)을 실행 시킬거다.그 다음 mongoose
callback의 장점은 에러들을 바로 볼수 있다는거다.추가적인 코드 없이 에러들을 바로 불러 올수 있다. 바로 이렇게 해볼 수 있다.이렇게 해줄수가 있다. 하지만 callback을 좋아하지 않는 이유는 function안에 function을 작성하는 걸 싫어 하기 때문
이제 진짜 database에서 비디오를 검색할수 있게 되었다.전 파트에서 async,await와 callback의 차이를 배웠다.아직 callback의 작동 원리가 헷갈릴 수도 있다. javascript와 return에 대해 조금만 알아도 return 부분에서 아무 기
전 파트에서 배웠듯이 schema는 비디오의 형태를 정의 해준다.video.js에서 살펴보면보이다시피 영상의 각 구성요소와 데이터 형태를 보여주고 있다. 이걸 이해했다면 사용자가 비디오를 업로드 할때 해당 schema의 데이터들을 보내줄 수 있다.물론 생성일이나 met
전 단계에서 new video document를 만들었다. videoController.js에서이렇게 만든건 javascript object였지만 아직 database에는 전송하지는 못하였다.video에게는 string으로 구성된 title이 있다는 걸 기억 할 거다.
현재 오류가 있고 console에서 해당 에러가 뭔지 정확히 알수 있다.또 다른 오류는 뭐가 있는지 찾아 본다. 예를 들어 이 에러는 validation 에러이다. createdAt에 잘못된 타입의 데이터를 전송했기에 그렇다.Date타입이 아니라 에러가 발생 하였다.
schema가 가질수 있는 옵션을 살펴 보도록 한다. https://mongoosejs.com/docs/schematypes.html사이트를 살펴 보면 다양한 옵션을 적용 할수 있는데 나중에 한번씩 다뤄 보도록 한다. 한가지 살펴 볼게 있는데 string을 작
전 파트에서 문제가 되었던건 영상을 클릭하면 영상의 id의 주소로 보내지는데 랜덤하게 나타난다.물론 이건 mixin에서 설정한 대로 실행중이다. 그러나 문제는 video router가 주소를 어떻게 다뤄야 하는지 모른다.videoRouter.js에서그 이유는 route
Documentation을 다시 보면 exec(execute)라는 걸 볼수 있다.https://mongoosejs.com/docs/api.html이게 뭘 하는 거냐면 이 부분이 query를 실행(execute)시키는 거다.그런데 문제가 뭐냐면 videoCont
간단하게 전 파트 복습을 해보도록 한다.이제 무엇을 해야 하냐면 다시 한번 post request를 보내야 한다. edit.pug에서 http://localhost:4000/videos/6252a57c867de2bae69b9f31/edit이 URL로 post
이전 파트에서 마무리 짓지 못했던 걸 이어서 해보도록 하겠다.그러기 위해서 먼저 findOneAndUpdate()라는 function에 대해 배워 볼거다.https://mongoosejs.com/docs/api.html실제로 model에는 할수 있는게 굉장히
만약 update할때 마다 콘솔에서 useFindAndModify optionset to false..같은 경고를 받는다고 가정 한다.걱정할 필요 없다. 단순하게 useFindAndModify를 DB안에 추가하면 된다. (현재 mongoose는 useFindAndMod
일단 모든 영상들을 다시 지워준다.mongodb shell에서 db.videos.remove({})를 해준다.그리고 잠깐 복습하자면 지난 파트에서 했던 부분이다. 어떤 이벤트가 발생하기 전에 중간에서 가로채서 문서를 수정 할수 있다는걸 배웠다. 지난 파트에서 이렇게 t
이번엔 영상을 삭제할수 있는 버튼을 만들어 본다.이건 정말 좋은 연습(?)이 될거다. 왜냐하면 template,controller,router 다 사용해야 한다.첫번째 스텝은 watch 페이지로 가서 watch.pug 이다.여기에 보면 Edit Video링크가 있다.