TIL 36일차 - node 심화 개인과제(1)

박찬웅·2023년 3월 13일
0

항해99

목록 보기
41/105

23년 3월 13일

배운 것

오늘부터 LV4 개인과제를 시작하였다. 이 중에서 댓글(Comments) DB와 마이그레이션 설정을 하였고, 댓글 API를 구현하였다.

시도 한 것

오늘부터 LV4 개인 과제를 시작하였다. LV4 과제는 LV3 했던 과제에서 여전히 기존 sequelize로 댓글 API랑 좋아요 API를 구현을 추가 하는 것이였다. 댓글이라면 이미 많이 해봤지만 좋아요 기능은 상당히 생소한 개념이라 아마 LV4에서 가장 어려운 부분이 아닐까 생각한다.

아침에는 댓글 DB를 생성하기 마이그레이션을 진행하였다. 근데 생각외로 어려웠던 것이 테이블 관계를 연결을 하는 것이 상당히 햇갈렸다. 테이블이 하나 더 늘어났기 때문에 관계 연결 하는 것이 더더욱 복잡해졌다.
그래도 강의 노트에 게시글 관련된 것이 있어서 그거 참고해서 테이블 관계를 설정을 하였고, 다음과 같이 구현을 하였다.

	  this.belongsTo(models.Users, {
        targetKey: 'userId',
        foreignKey: 'userId',
      });
      
      this.belongsTo(models.Posts, {
        targetKey: 'postId',
        foreignKey: 'postId',
      });

Comments 모델 관계 설정

this.hasMany(models.Comments, {
        sourceKey: 'postId',
        foreignKey: 'postId',
      });

Posts 모델 관계 설정 추가

this.hasMany(models.Comments, {
        targetKey: 'userId',
        foreignKey: 'userId',
      });

Users 모델 관계 설정 추가

commentId: {
      allowNull: false,
      autoIncrement: true,
      primaryKey: true,
      type: DataTypes.INTEGER,
    },
    postId: {
      type: DataTypes.INTEGER,
      allowNull: false,
    },
    userId: {
      type: DataTypes.INTEGER,
      allowNull: false,
    },
    nickname: {
      allowNull: false,
      type: DataTypes.STRING,
    },
    comment: {
      allowNull: false,
      type: DataTypes.STRING,
    },
    createdAt: {
      allowNull: false,
      type: DataTypes.DATE,
      defaultValue: DataTypes.NOW,
    },
    updatedAt: {
      allowNull: false,
      type: DataTypes.DATE,
      defaultValue: DataTypes.NOW,
    },

댓글 테이블 생성 할때 컬럼들은 다음과 같이 7가지를 추가하였다.

그리고 나서 이제 댓글 API를 구현하기 시작하였다. 댓글 API 구현도 조회, 생성, 수정, 삭제 API 작성하면 되었다. 이미 이전에 입문주차때부터 숙련주차때까지 한번 연습 많이 한 부분이기도 하고, 이 부분을 구현하는데에는 2시간이면 충분히 모두 다 구현하였다. 기존에 게시글에서 적었던 API를 참고해서 붙히면 되었기에 전반적으로 어려운 부분은 없었다.

해결

오늘은 LV4의 과제중 댓글 DB 컬럼이랑 관계를 맺는 것과 댓글 API 구현 하는데 마무리 하였다.

알게 된 점

확실히 테이블이 2개만 있었던 LV3과는 다르게 LV4부터는 테이블이 4개로 늘어나게 되면서 테이블 관계 설정 하는 것이 복잡해졌다는 것이였다. 오늘은 아직 좋아요 테이블이랑 좋아요 관련 API를 구현하는것은 못했는데도 댓글 테이블만 추가해도 상당히 복잡한 관계 설정이 필요하였다. 왜래키 설정도 더 필요했었고, 이 부분에서 테이블 생성, 삭제를 많이 한 것 같았다. 내일도 좋아요 API 추가되면 상당히 고전 할것 같은데 걱정은 되지만 그래도 댓글은 테이블 정의랑 관계 설정만 어려웠지 API 구현은 어렵지 않게 진행 하였다.

번외 : 항해 선상파티

오늘 공부를 거의 안한감이 있는데 바로 오후 5시부터 처음으로 오프라인 선상파티를 진행하였다. 그래서 4시까지만 공부하고 이 뒤에는 항해를 주최했던 회사에 가서 선상파티 기념으로 지금까지 캠으로만 봤던 같은 동기들이랑 처음으로 대면으로 보는 순간이였다. 많은 얘기를 나눴고, 거기 가서 특별 세션도 있었는데 개발자가 되기 위한 조건이나 이미 항해를 수료하신 선배님들의 조언 같은 세션을 들었었다. 확실 한 건 의지가 젤 중요하고, 의문을 자주 내면 안 된 다는 것을 알게 되었다. 그렇게 7시까지 세션 끝나고 그 뒤로 여러 사람들과 대화 하면서 얘기 나누다가 집에 와서도 게더에서 미처 못갔던 동기들일아 말하느라 오늘 공부한 량은 적었다. 그렇게 얘기 나누고 하루를 마무리 하였다.

앞으로 할 일

내일은 좋아요 테이블 생성하고 추가된 테이블의 관계 설정을 한 다음에 마저 좋아요 API를 구현 할 예정이다.

profile
향해 13기 node.js 백앤드

0개의 댓글