-
[first project] 4일차 회고 / 백엔드 기초 환경 세팅 및 DB 구축 2project 2022. 4. 8. 09:47반응형
백엔드 기초 환경 세팅 2
이제 데이터베이스 생성과 sequelize 세팅은 되었고 테이블을 생성하면 된다.
우선 이번 프로젝트의 스키마이다. 이것을 짜놓고 보면서 테이블을 생성하는게 개인적으로 직관적이고 빠른 편이었다.
user 모델 (테이블)
npx sequelize model:generate --name user --attributes email:string,password:string,nickname:string
interest 모델
npx sequelize model:generate --name interest --attributes name:string
group 모델
npx sequelize model:generate --name group --attributes name:string,desc:string,interet_id:integer
post 모델
npx sequelize model:generate --name post --attributes title:string,content:string,total_likes:integer,user_id:integer,group_id:integer
comment 모델
npx sequelize model:generate --name comment --attributes post_id:integer,user_id:integer,content:string
이렇게 모두 생성하면 models 폴더에 차곡차곡 테이블들이 쌓여있을 것이다!
추가 수정한 부분 post 모델의 total_likes는 기본값이 0이어야 해서 수정해주었다.// models/post.js ... post.init({ title: DataTypes.STRING, content: DataTypes.STRING, total_likes: { <---- type: DataTypes.INTEGER, <---- 이 세줄의 형식처럼 변경해주기 defaultValue: 0 <---- }, user_id: DataTypes.INTEGER, group_id: DataTypes.INTEGER }, ...
이렇게만 하면 스키마처럼 화살표그어진 부분, 즉 테이블간의 관계가 설정이 아직 되어있지 않다!
그래서 models 폴더에서 하나씩 수정해준다.models/user.js
static associate(models) { // define association here models.user.hasMany(models.comment, { foreignKey: "user_id", sourceKey: "id" }); models.user.hasMany(models.post, { foreignKey: "user_id", sourceKey: "id" }); models.user.belongsToMany(models.group, { through: "user_group", foreignKey: "user_id", }); }
models/interest.js
static associate(models) { // define association here models.interest.hasMany(models.group, { foreignKey: "interest_id", sourceKey: "id" }) }
models/group.js
static associate(models) { // define association here models.group.belongsToMany(models.user, { through: "user_group", foreignKey: "group_id", }) models.group.hasToMany(models.post, { foreignKey: "group_id", sourceKey: "id" }) models.group.belongsTo(models.interest, { foreignKey: "id", sourceKey: "interest_id" }) }
models/post.js
static associate(models) { // define association here models.post.belongsTo(models.group, { foreignKey: "group_id", sourceKey: "id" }) models.post.belongsTo(models.user, { foreignKey: "user_id", sourceKey: "id" }); models.post.hasMany(models.comment, { foreignKey: "post_id", sourceKey: "id" }); }
models/comment.js
static associate(models) { // define association here models.comment.belongsTo(models.user, { foreignKey: "user_id", sourceKey: "id" }); models.comment.belongsTo(models.post, { foreignKey: "post_id", sourceKey: "id" }); }
테이블 간의 관계 설정을 마무리했다면migrations 폴더 내 파일들을 통해 DB와 일치화 작업을 해준다.
npx sequelize db:migrate
이 과정까지 마치면 DB 구축이 완료되었다.
그리고 .env 파일을 이용했기 때문에 .gitignore파일을 생성해서 작성해준다.// .gitignore .env node_modules
일단 이 정도로 프로젝트의 백엔드 기본 환경 세팅 및 DB 구축이 완료되었다!
반응형'project' 카테고리의 다른 글
[first project] sequelize로 데이터베이스 다루는 법 (0) 2022.04.10 [first project] 협업에서 필요한 데이터베이스 사용법(feat. MYSQL, Sequelize) (0) 2022.04.09 [first project] 팀 내 Git Workflow 정리 (0) 2022.04.09 [first project] 3일차 회고 / 백엔드 기초 환경 세팅 및 DB 구축 1 (0) 2022.04.07 [first project] 1~2일차 회고(feat. SR의 중요성) (0) 2022.04.05