Node.js 후발대 숙련주차 과제 설명: ERD 작성, 프로젝트 폴더 설정, 필요 모듈 설치, cli 명령어 배우기
1. ERD 작성
과제 요구사항을 보며 어떤 테이블과 칼럼이 필요한지 작성해보자.
회원테이블: User
- id <primary key> -> 1,2,3... 이런식으로 늘어남 (AutoIncrement, NotNull, Unique) - 테이블에서 유일하게 구분 가능함
- nickname - 최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)
- password - 최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패
게시글 테이블: Post
- id <primary key>
- title
- content
- createdAt
- updatedAt
- user_id <foreign key> why: 특정 게시글의 해당하는 user_id와 일치하는 테이블의 정보만을 가지고 올 수 있다. (left join)
댓글 테이블: Comment
- id <primary key>
- content
- createdAt
- updatedAt
- user_id <foreign key>
- post_id <foreign key> why: 해당 게시글에 속한 댓글을 전부 불러올 수 있다.
과제 요구사항 8번의 게시글 좋아요는 테이블을 따로 만드는 게 나을까, 아니면 Post 테이블에 칼럼으로 넣는게 좋을까?
-> 어떤 사용자가 어떤 게시글에 좋아요를 눌렀는지 알기 위해서 테이블을 따로 분리하는 게 좋다.
좋아요 테이블: Like
- id <primary key>
- user_id <foreign key>
- post_id <foreign key>
timestamp는 2030년쯤으로 유한기간이 있어서 datetime을 쓰는 게 좋다.
2. mongoose를 sequelize로 변경하기 ★★★★★
프로젝트에서 사용할 모듈 정리
1) sequelize 설치
ORM(Object Relational Mapping)
보통은 dbeaver나 workbench 등에서 sql를 쓰는데, ORM을 통해 자바스크립트로 db를 작성할 수 있다.
2) sequelize-cli도 설치한다.
3) express라는 서버 프레임워크를 사용해서 웹서버를 만든다.
4) json web token (jwt) 설치 ex. 로그인 토큰을 통해 본인인증.
5) 쿠키를 통해 토큰 값을 프론트로 보내주기. 쿠키 파싱하기 위한 cookie-parser 사용하기.
6) mysql2: node에서 mysql 조작하기 위한 툴. ex. select 등의 명령어
7) 개발 환경: nodemon으로 서버를 자동으로 켜준다. 서버를 껐다가 켜야지 변경된 것이 반영된다.
코드가 변경되면 자동으로 서버가 껐다가 켜진다.
8) 환경 변수: 포트나 aws, 공개 api key 등을 환경 변수로 저장한다.
노드에서는 dotenv를 사용한다. .env 파일을 사용하게 해준다.
1. express - 서버 프레임 워크
2. cookie-parser - 쿠키를 쉽게 세팅
3. jsonwebtoken - jwt 이용하여 인증
4. nodemon - 서버를 자동으로 켜줌(개발용)
5. sequelize - ORM db, table 을 서버에서 쉽게 생성 및 여러 쿼리 함수사용가능
6. sequelize-cli - 시퀄라이즈를 cli를 통해서 실행(개발용)
7. mysql2 - node용 mysql client
8. dotenv - 환경변수 .env파일을 사용하게 해줌
3. 프로젝트 폴더 설정
일단 터미널에서 powershell이 아니라 git bash로 보기.
1) npm 사용 프로젝트 생성.
npm init -y
2) git 세팅
# 깃 초기화
git init
# .gitignore 작성
touch .gitignore (node_modules, .env)
ll -a git폴더 만들기
npm install express
.gitignore 작성
package json이라는 모듈로 관리하기 때문에, node_modules/ 폴더 안에 있는 많은 파일들은 필요없다.
package.json, package-lock.json만 깃 레퍼지토리에 올리고, node_modules/는 버전관리에 추적하지 않을 것이다.
따라서 ignore 파일을 만들어야 한다. touch.gitignore
이 폴더에 ignore할 폴더를 적으면 된다.
4. 필요 모듈 설치
npm i express cookie-parser jsonwebtoken sequelize mysql2 dotenv nodemon sequelize-cli -D
5. 명령어 배우기
pwd (print working directory) 현재 작업중인 디렉토리 정보 출력
cd Desktop (change directory) 경로 이동
ls (list) 디렉토리 목록 확인
md test (make directory)
touch packagelist.md 파일, 디렉토리 최근 업데이트하기, 존재하지 않으면 빈 파일 만든다.
npm i
ctr alt
ctr d (똑같은 것 찾아주는 것) 하고 화살표 밑으로 내리면 중복커서 가능함.
shift end키 누르면 뒤에것 다 잡힌다.
더 자세히 보기
다음 시간 (화요일 오후 2시부터) 필요 파일 생성(서버 시작 파일, 환경 변수 파일)
.env 파일 작성 (port)
app.js 파일 생성