Node.js 숙련
1. Sequelize
1) 구성
- migration과 model
- migration은 Sequelie CLI를 이용하여 MySQL에 테이블을 생성하기 위해 사용
- model은 table과 column의 속성값을 설정하고 MySql과 Express를 연결 시킴
2) 사용 방식
- 테이블 모델 생성: npx sequelize model:generate --name Posts --attributes title:string,content:string,password:string
- model이 생성되고, model을 Sequelize시킨 migration 파일 생성(model의 시퀄라이즈 적용 결과 데이터)
- 이후 npx sequelize db:migrate를 진행하면 위의 사항들이 반영된 테이블 생성 완료
- db의 스키마가 변경되며 sequelize 명령어를 사용 가능
3) 자주 쓰는 Sequelize Method
- find, findOne, findAll, findByPk
- create, update, destroy
2. Migration
1) 상세
- MySQL 테이블을 정의 및 생성하기 위해 사용됨
2) 수정 가능
- 아직 데이터를 넣기 전이라면 undo로 취소 후 npx sequelize db:migrate 재적용
- 데이터를 보존하며 수정 시 (https://crispypotato.tistory.com/156)
- migration 없이 수정 시(해당 방식보다 migration을 사용 하는것이 유지 보수에 유리 - 서버를 항상 켜줘야하며, 상세 명령어 등록이 까다로움)
3. 타임스탬프 관련
1) 타임스탬프 버그
- 현재 MySQL의 경우 defaultValue를 현재 시간(CURRENT_TIMESTAMP)으로 등록하려 할 때, Seqeulize.NOW로 속성을 입력할 경우 정상적으로 반영이 되지 않는 문제가 있음
- 해당하는 문제를 해결하기위해 defaultValue: Sequelize.fn("now")로 설정 필요
2) 타임스탬프 비활성화
- 생성 날짜, 수정 날짜의 경우 테이블을 만들 때 자동으로 생성됨
- 이를 방지하려면 model의 sequelize부분에 timestamps:false 추가
'항해14기 본과정 > 항해14기 개발일지' 카테고리의 다른 글
[항해 14기] 개발일지22 (Node.js 4lv 과제) (0) | 2023.04.27 |
---|---|
[항해 14기] 개발일지21 (Node.js 3lv 과제) (0) | 2023.04.26 |
[항해 14기] 개발일지19 (SQL, Sequelize) (0) | 2023.04.24 |
[항해 14기] 개발일지18 (쿠키/세션, JWT, RDS) (0) | 2023.04.24 |
[항해 14기] 개발일지17 (Node.js 1LV 과제, 2LV 과제) (0) | 2023.04.24 |