일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MongoDB
- class
- mongoose
- AWS
- JavaScript
- OCR
- dfs
- Nest.js
- GIT
- Queue
- cookie
- nodejs
- react
- nestjs
- Bull
- flask
- 자료구조
- Sequelize
- 게임
- Express
- Dinosaur
- 정렬
- jest
- typeORM
- TypeScript
- game
- Python
- 공룡게임
- MySQL
- Today
- Total
포시코딩
[Sequelize] createdAt, updatedAt 컬럼 없는 테이블 다루기 본문
개요
좋아요 테이블을 만들었는데 자동생성되는 createdAt이랑 updatedAt이 필요 없을 것 같아
migration할 때 둘 다 안 만들어지게 한다음 테이블을 생성했다.
Likes 테이블
넣을 정보가 별로 없어 간단하게 코드 구현해서 평소처럼 Model.create() 했는데 에러가 발생했다.
(create()뿐만 아니라 findOne() 종류를 포함해 모든 명령어가 다 안되고 있었을 것이다.)
원인 파악
에러 메시지를 뽑아보니 테이블을 만들 때 제외했던 createdAt이랑 updatedAt을 다루고 있었다.
나는 분명 제외해서 만들었고 Like modeld에도 다 없는거 확인했는데..?
sequelize에서 자체적으로 createdAt, updatedAt을 같이 다루게 되있는 것 같았다.
그럼 찾을 때랑 데이터를 넣을 때 다 직접 하나하나 지정해줘야 하나 했는데
분명 방법이 있을 것 같아 못하는 영어로 찾아 헤매기 시작했다.
- sequelize create insert error but i don't have createdAt updatedAt column..
- sequelize Unknown column 'createdAt' in 'field list'..
이런식으로 계속 검색하다보니 stackoverflow에서 공통적으로 안내하고 있는 옵션이 있었다.
문제 해결
timestamps: false
모델에 timestamps 기능을 false 하라는 안내였는데,
내가 쓰는 버전이 최신이라 그런지 다들 define 한 곳에서 쓰게끔 되있었지만
공통적으로 columns 설정들 뒤에 따라오게끔 되있는걸로 봐서 눈치껏 내 코드에도 추가해봤다.
빨간 네모친 부분만 보면 된다.
저장 후 테스트해봤는데 createdAt, updatedAt에 대한 내용 없이 원래 목적대로 잘 작동했다!
Sequelize를 다루며 문제를 겪을때마다 충동적으로 삭제 후 다시 만들까 라는 생각을 하면서도
찾아보면 문제를 위한 해결방법이 다 있는 것을 볼때마다 이래서 사람들이 많이 쓰는 기능을 써야 되는구나를 느낀다.
예전 Java를 하며 Struts를 다룰 때 궁금한 부분에 대해 아무리 검색해도 나오지 않았던 것을 생각하면..
처음엔 어색하고 어려웠던 Sequelize가 점점 더 편하고 좋아지는 것을 느끼고 있다.
'Node.js' 카테고리의 다른 글
Redis (0) | 2022.12.24 |
---|---|
[Sequelize] SQL 쿼리(Raw Query) 그대로 사용하기 - Sequelize.query (0) | 2022.12.23 |
[Sequelize] migration을 이용한 Table 속성 변경 방법들 (0) | 2022.12.22 |
[Sequelize] 이미 생성한 테이블의 컬럼 속성 변경하기 (0) | 2022.12.22 |
[Sequelize] FK(Foreign Key) 설정하기 (0) | 2022.12.21 |