1. 오늘 겪은 문제
1. sequelize 외래키, 참조키 설정 hasnOne, hasMany, belongsTo
2. sequelize model에서 생성말고 db:migrate해야하는 이유
2. 해본 시도
1.mongoose에서 그렇게 힘들던 외래키 설정이 mysql-sequelize에서는 이렇게 쉽게! 가능해 보였다. 그러나 db-migration 설정과 model에서의 정의 모두 해당 사항을 명시해줘야 하는데, db-migration에서는 자세히 안 적어줘도 되고 references를 통해서 참조하는 속성에서만 언급해주면 된다. model에서는 hasmay, hasone, belongsto를 가지고 참조 되는 속성, 참조 하는 속성 모두에서 표현해 줘야한다.
2. mysql, sequelize db를 생성, 연동할 때에, migration에 정의한 db를 생성하고, 모델을 그에 맞춰 작성해서 연도하는 방법이 있고, migration하지 않고 모델을 작성하여 sync해주는 방법이 있다. 하지만 model을 후에 수정하여 sync할때 기본적으로 데이터 베이스를 초기화 후 재생성하기 때문에 기존에 있던 정보들이 날라가기 때문에 주의해야 하며, indexing 과 같은 정교하고 세세한 옵션 설정들을 하기에도 migration이 좋다고 합니다.
3. 해결 방법
- 외래키 참조키가 사용하기 쉬워졌다면 해당 테이블들 사이의 관계를 명확히 표현하는 ERD에 익숙해질 필요가 있다.
- db migration에 익숙해져야하고 해당 명령어를 익힐 필요가있다. npx sequelize db:create, npx sequelize db:migrate, npx sequelize db:migrate:undo
migrate 로그를 확인한다면 db의 변화 역사를 볼 수도 있을 것 같다.
4. 새롭게 알게 된 점
- mongodb-mongoose에서 mysql-sequelize로 db이전을 경험해 보았다. 사용하는 문법이 조금 달랐고, model을 정의하는 방식이 조금 달랐다(schema -> model, migration 추가)
5. 오늘 더 효율적으로 일할 수 있었을 것 같은 방법은?
- 물론 오래 앉아서 계속 집중하는 것이 제일 베스트 이겠지만, 하루 밥먹는 시간 빼고 대략 11시간에서 13시간 정도의 공부시간 동안 계속 집중하는 것은 불가능한 일인 것 같다. 되려 그러다가 놓친 시간들이 스치듯 생각이 난다. 때문에 내일 부터는 규칙적인 휴식 또한 적용해보아야 겠다, 물론 시간당 10분을 넘길 생각은 없다. 휴식이란 단어만 보면 설레는 스스로를 절제 해보자.