[개정3판] Node.js 교과서 - 76강. 데이터베이스 세팅하기

_·2023년 11월 14일

모델 생성

1. 소스 코드

https://github.com/ZeroCho/nodejs-book/tree/master/ch9/9.1/nodebird

models/user.js: 사용자 테이블과 연결됨
provider: 카카오 로그인인 경우 kakao, 로컬 로그인(이메일/비밀번호)인 경우 local
snsId: 카카오 로그인인 경우 주어지는 id
models/post.js: 게시글 내용과 이미지 경로를 저장(이미지는 파일로 저장)
models/hashtag.js: 해시태그 이름을 저장(나중에 태그로 검색하기 위해서)

models/index.js

1. 시퀄라이즈가 자동으로 생성해주는 코드 대신 다음과 같이 변경

모델들을 models 폴더에서 자동으로 불러옴(readdirSync)
모델 간 관계가 있는 경우 관계 설정
User(1):Post(다)
Post(다):Hashtag(다)
User(다):User(다)

associate 작성하기

1. 모델간의 관계들 associate에 작성

1대다: hasMany와 belongsTo
다대다: belongsToMany
foreignKey: 외래키
as: 컬럼에 대한 별명
through: 중간 테이블명

팔로잉-팔로워 다대다 관계

1. User(다):User(다)

다대다 관계이므로 중간 테이블(Follow) 생성됨
모델 이름이 같으므로 구분 필요함(as가 구분자 역할, foreignKey는 반대 테이블 컬럼의 프라이머리 키 컬럼)
시퀄라이즈는 as 이름을 바탕으로 자동으로 addFollower, getFollowers, addFollowing, getFollowings 메서드 생성

시퀄라이즈 설정하기

시퀄라이즈 설정은 config/config.json에서
개발환경용 설정은 development 아래에

설정 파일 작성 후 nodebird 데이터베이스 생성

모델과 서버 연결하기

1. sequelize.sync()가 테이블 생성

IF NOT EXIST(SQL문)으로 테이블이 없을 때만 생성해줌

2. npm start로 서버 실행 시 콘솔에 SQL문이 표시됨

0개의 댓글