분류 전체보기
-
Model - User.jsProject using node.js/Cloning Youtube 2020. 8. 23. 15:23
Schema는 MongoDB의 데이터 구조다. mongoDB는 NoSQL 언어다. 그래서 관계형 데이터 언어가 아니다. mongoDB는 mongoose로 Schema를 작성해서 데이터 구조를 만들어 놓는다. Schema는 데이터가 아니다. model(=collection)을 만들고 그 model의 데이터 구조를 Schema로 작성한 것이다. 나는 UserSchema를 작성했다. name, email과 avatarUrl은 type을 String으로 했다. githubId와 kakaoId는 type을 Number로 comments와 videos는 객체를 담을 수 있는 배열로 선언했다. User.js 이외에 Video.js와 Comment.js를 만들고 그에 따른 Schema와 model을 만들면 UserSc..
-
MongoDB와 mongooseProject using node.js/Cloning Youtube 2020. 8. 23. 14:31
설치 next를 누른다. agree 그리고 next Complete를 누른다. checkbox 해제 및 next Compass 설치 여부는 기호에 따라, 나는 해제했다. 그리고 next Install 끝! 설치 확인 방법은 terminal에 mongo와 mogod를 쳐서 다음과 같이 나오면 잘 설치가 된 것이다. wsl을 사용해서 mongo와 mongod의 명령어를 찾을 수가 없다고 하는데, mongo.exe나 mongod.exe를 치면 된다. 나중에 이 부분은 alias 처리를 해줘서 mongo와 mongod로 바꿔주자. Mongoose 설치 MongoDB를 이제 Node.js와 연결해야 한다. 그러기 위해서 mongoose를 설치하자. #npm install mongoose mongoose는 ODM(..
-
MVC patternProject using node.js/Cloning Youtube 2020. 8. 23. 13:32
프로그래밍을 함에 있어서 가장 중요한 습관은 divide and conquer다. 소스 코드를 짤 때 최대한 나눌 수 있는대로 기능별로 함수와 모듈을 작성해야 하고 하나씩 해결해야 한다. MVC pattern은 소프트웨어 디자인 공법이다. 사용자에게 '무엇'을 어떻게 '처리'하여서 '보여줄지'를 디자인하는 방법론이다. Model : 애플리케이션의 정보(데이터)다. 비즈니스 로직이 '무엇'을 처리할지에서 무엇을 담당한다. View : 사용자에게 보여지는 인터페이스 부분이다. Controller : 데이터와 비즈니스 로직 사이의 상호동작을 관리한다. 데이터를 어떻게 '처리'할 지를 담당하는 부분이다. 지금까지 JS로 Controller를 작성했고, pug로 View를 작성했다. 이제 Model은 MongoD..
-
export default VS exportProject using node.js/Cloning Youtube 2020. 8. 22. 16:47
export default export default는 파일 안에서 한 개의 object만 내보낼 때 사용한다. export된 app.js를 사용할 때는 import from './app'이라고 한다. 단순한 export를 사용할 때는 한 파일 안에서 여러 개를 export할 때 사용한다. export default와는 다른 점은 export default는 하나의 객체를 내보내지만 export는 여러 개의 객체나 함수 등을 내보낸다. export된 함수들을 사용할 때는 import { 정확한 함수명 } from '함수 경로'로 사용한다.
-
Middlewares for local variablesProject using node.js/Cloning Youtube 2020. 8. 22. 16:25
pug는 JS처럼 변수를 사용해서 html을 작성하는 템플릿 엔진이라고 했다. pug에게 서버가 변수를 전달하기 위해서 나는 middlewares.js 파일을 따로 만들고 next()로 변수를 router에게 넘겨줬다. 빨간색 밑줄은 신경 안 써도 된다. eslint가 파일에서 하나만 export할꺼면 export default로 하라고 하는 건데 상관 없다. 나중에 이 파일에는 내가 만든 여러 가지의 middleware들이 쌓이기 때문이다. pug에게 변수를 넘겨주는 방법은 res.locals.변수이름 이다. pug에서 siteName='WeTube'가 되고 routes는 1번 줄에서 import한 routes가 된다. app.js에서 localMiddleware를 import하고 app.use를 사용..
-
pugProject using node.js/Cloning Youtube 2020. 8. 22. 16:06
소개 html을 작성하다 보면 여러 개의 페이지가 중복되는 코드가 발생한다. 예를 들어 유튜브의 홈페이지에서 영상을 클릭하면 해당 영상을 play할 수 있는 페이지로 이동하게 된다. 동영상이 1억개 면 이러한 영상 페이지를 html로 1억개를 작성해야 한다. 정말 끔찍한 경우다. 이것을 영상의 정보에 따라 중복되는 부분을 하나의 코드로 줄이고 전체 레이아웃을 하나 짜서 동영상의 정보에 따라 페이지를 구성하는 방법이 있다. 템플릿 엔진인 pug를 사용하는 것이다. 설치 #npm install pug 그리고 app.js에 app.set('view engine', 'pug')를 추가한다. 이렇게 하면 app.js가 있는 디렉토리에 views 폴더를 찾고 그 안에서 .pug 파일들을 찾아서 랜더링 한다. 흐름은..
-
Node.js의 RouterProject using node.js/Cloning Youtube 2020. 8. 21. 11:23
소개 이제 개발을 위한 기본적인 세팅은 끝났다. 이번에 할 작업은 router다. youtube(가제 wetube)를 사용하기 위해서는 필요한 기능들이 있다. home, uploading video, join, login and etc...이다. 이러한 기능들은 사용자가 해당 URL을 접속했을 때 사용할 수 있다. 사용자가 어떤 URL을 접속하냐에 따라 서버가 그에 따른 페이지를 보여줘야 하는데, 이것을 routing 작업이라고 한다. 여기서 내가 만들 파일은 크게 2가지다. routes.js와 Router(globalRouter.js, userRouter.js, videoRouter.js)다. 다 만들게 된다면 디렉토리 구조는 다음과 같다. controller 폴더도 존재하는데, routing을 했으면..
-
다양한 middlewaresProject using node.js/Cloning Youtube 2020. 8. 20. 11:42
express의 개념은 크게 두 가지로 나뉜다. middleware와 route다. 그 중 우리는 여러 가지 middleware를 설치할 것이다. middleware에 대한 설명은 나중에 하겠다. 프로젝트를 진행함에 따라 수 많은 middleware를 설치할 건데, 지금 필요한 middleware를 설치할 것이다. morgan morgan은 logging middleware다. 옵션으로는 dev를 줬다. dev 옵션은 밑에 형식으로 개발 사용을 위한 응답 상태별로 색상이 지정된 간결한 출력을 한다. :status 토큰은 성공 코드의 경우 녹색, 서버 오류 코드의 경우 빨간색, 클라이언트 오류 코드의 경우 노란색, 리디렉션 코드의 경우 청록색, 정보 코드의 경우 무색상이 된다. middleware를 사용하..