IM 69일차

Gong Intaek·2021년 5월 1일
0

코드스테이츠

목록 보기
107/151
post-thumbnail

TIL

m:n Table 구성

구상한 스키마

  • 유저와 코멘트 테이블이 존재하고 좋아요를 확인 할수 있는 m:n 테이블 구성

적용 방법

  • sequelize 공식 페이지에서 언급된 것 처럼 belongsToMany로 관계를 맺어준다.
  • 실질적으로 likes 테이블과는 직접적으로 관계를 맺지 않는다.
  • user와 comment 테이블을 belongsToMany 로 이어주고 중간 테이블을 likes로 지정한다.
// user.js
    static associate(models) {
      models.User.hasMany(models.Comment, {
        foreignKey: "id",
      });
      models.User.belongsToMany(models.Comment, {
        through: models.Likes,
        foreignKey: "user_id",
      });

    }

// comment.js
    static associate(models) {
      models.Comment.belongsTo(models.User, {
        foreignKey: "user_id",
      });
      models.Comment.belongsToMany(models.User, {
        through: models.Likes,
        foreignKey: "cmt_id",
      });
  • 위과 같이 구성하고 다음과 같이 수행하면
{
  id: 1,
  name: 'A',
  createdAt: 2021-05-01T12:19:46.000Z,
  updatedAt: 2021-05-01T12:19:46.000Z,
  Comments: [
    Comment {
      dataValues: [Object],
      _previousDataValues: [Object],
      _changed: Set(0) {},
      _options: [Object],
      isNewRecord: false,
      Likes: [Likes],
      User: [User]
    },
    Comment {
      dataValues: [Object],
      _previousDataValues: [Object],
      _changed: Set(0) {},
      _options: [Object],
      isNewRecord: false,
      Likes: [Likes],
      User: [User]
    }
  ]
}

와 같은 결과를 얻었다.


오늘 한 일

  • m:n 테이블 구성
  • m:n 테이블 테이블을 이용한 검색기능 확장
  • 데이터 베이스 재정리. 통폐합.

To Do

  • scss 도 활용을 생각해보면 좋을것 같다.

  • typescript 공부 예제를 생각해보자

  • vue, angular 공부 해보자


오늘은...

어제 고생하였던 것 처럼 m:n 테이블 구성 하는데에 하루를 보냈다. 그리고 작게나마 성취가 있었다. 부족하나마 m:n 테이블을 구성하고 그로부터 원하는 정보를 얻게끔 구성할 수 있었다. 물론 그와중에 정보를 얻는게 방해가 되는것 같은 자투리 테이블을 합쳐서 큰 테이블 몇개로 구성을 단순화 시켰다. 내일은 토큰을 활용한 접속 유지 작업을 수행해야겠다.

profile
개발자가 되기위해 공부중

0개의 댓글