Sequelize (1)

동키·2022년 11월 28일
0

<참고 링크>

Node.js Sequelize 정리
특히 이 링크는 내가 sequelize를 이해하는 데에 정말 큰 도움을 받았다.

https://any-ting.tistory.com/50


<오늘 배운 것>

1. 대소문자 구별은 괜히 하는 것이 아니다.

const Sequelize = require("sequelize");

const sequelize = new Sequelize(
  config.database,
  config.username,
  config.password,
  config
);

db.sequelize = sequelize;
db.Sequelize = Sequelize;

=> 중복되는게 있네, 하고 코드를 지워버렸는데 오류가 났다.
대소문자 구별을 괜히 하는 것이 아니라는 걸 깨달았다.
다 이유가 있고 매우 중요하니까 구분하는 것이었다...

위 코드에서
(대문자) Sequelize 는 module 이고!
(소문자) sequelize 는 모듈 'Sequelize'을 이용해 DB로 연결되는 SQL 관련 내용을 담은 객체이기 때문에

sequelize != Sequlize 라고 할 수 있겠고
로직에 대한 이해를 통해 코드를 짜려는 자세가 더욱 필요한 것 같다.

2. 테이블간 관계 생성

모델의 static associate(db){} 부분에서 테이블간의 관계를 작성하면 되는데

맺을 수 있는 관계의 유형은 다음과 같다

1:1

  • hasOne & belongsTo
  • ex) 유저 - 유저 정보

1:N

    • hasMany & belongsTo
  • 한명의 유저가 다수의 댓글 작성 or 한 회사의 유저가 여러명일 때 등 사용하는 방식)

N:M (다대다)
-belongsToMany & belongsToMany

1:N 유형의 관계 생성 예시

 static associate(db) {
    // 외래키(관계)에 대한 설정 (in user.js)
    //외래키는 commenter의 commenter, 소스키는 user의 id 
    db.User.hasMany(db.Comment, { foreignKey: "commenter", sourceKey: "id" });
  }

static associate(db) {
    // 외래키(관계)에 대한 설정 (ins comment.js)
    db.User.belongsTo(db.User, { foreignKey: "commenter", sourceKey: "id" });
  }
};

사담:
빠른 수업을 따라가려면 생각할 겨를 없이 강사님의 코드를 따라 적기 바빠
이해가 가지 않아도 넘어가는 경우가 있다. 그 때 적당히 구현 되면 하고 아~ 그런거구나, 하고 일단 넘어간 뒤 시간이 널널할때 코드 리뷰를 다시 하고 있다.
이 과정에서 많이 배우는 것 같다. 대부분의 수강생이 전공자라서 내가 모르는 게 한없이 사소하고 기초적인 거라는 생각에 조금 주눅이 들 때도 있지만, 기초부터 열심히 닦으며 튼튼한 개발자로 거듭날 수 있도록
나는 나의 길을 갈테다!

profile
안녕하시와리

0개의 댓글