개발하고 싶은 초심자
3-4. sequelize.sync()를 활용하여 모든 모델 자동 동기화하기 본문
3-4. sequelize.sync()를 활용하여 모든 모델 자동 동기화하기
정새얀 2022. 5. 17. 19:321. sequelize.sync()
지금까지 작성했던 모델을 자동으로 연결해주고자 server/index.js에 sync()를 활용하는 코드를 작성했다.
사실 처음에 해주었다면 좋았겠지만 프로젝트를 보다 완성도 있게 하려고 배우지 않았던 것들을 공부하다 보니
공식문서에서 이제야 발견하게 되었다.
sequelize.sync({ force: false })
.then(() => {
console.log('데이터베이스 연결 성공')
})
.catch((err) => {
console.error(err)
})
이렇게만 추가하고 저장한 뒤 서버를 실행했더니, 복수형 이름들의 데이터베이스들이 자동으로 추가되었다.
알아보니 모델을 생성할 때 freezeTableName: true 옵션을 추가해주지 않으면 그렇게 되는 것이었다.
모든 모델들 파일에 옵션을 추가해주고 다시 실행해보았더니 잘 작동되는 것을 확인할 수 있었다.
이러한 옵션들을 알아보면서 추가로 알게 된 것이 있었는데,
select 쿼리문을 날릴 때 자동으로 createdAt, updatedAt을 날리는데, 딱히 timestamp를 찍어주지 않아도 될 때가 있기 때문에 조금 거슬릴 때가 있었다.
이 기능도 timestamps: true 옵션으로 off 할 수 있다.
또 하나는 지금 index.js에 작성한 코드에는 force: false로 지정이 되어 있는데,
db를 변경할 일이 있을 때 강제로 업데이트를 하게 하려면 false를 true로 변경해주면 된다는 것이다.
원래 있던 테이블에 칼럼이 바뀌거나 하는 등의 기능은 force를 사용해야 하지만,
force를 사용했을 때 이전에 있던 db의 내용은 전부 날아가기 때문에 사용에 주의해야 한다.
이러한 내용 때문에 alter: true라는 방법도 있는데, alter는 기존 db의 데이터들이 날아가지 않고 새로운 테이블이 생긴 경우에 사용이 가능하다는 것이다.
'Project in Codestates > First Project' 카테고리의 다른 글
3-6. 220519 최종 정리 및 발표 준비 (0) | 2022.05.19 |
---|---|
3-5. postman을 활용한 응답 받아오기 확인 (0) | 2022.05.18 |
3-3. 220516 처음부터 다시 시작, 에러 핸들링 & oauth 활용 (0) | 2022.05.16 |
3-2. 220515 코드작성(2) & 에러 핸들링 (0) | 2022.05.15 |
3-1. 220514 코드 작성(2) (0) | 2022.05.13 |