You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
따라서 하기의 npx sequelize 명령어 들도 src/sequelize 경로 아래에서 실행하였습니다.
npx sequelize db:create
npx sequelize db:migration
npx sequelize db:migration:undo
DB 연결부터 테이블 생성까지 큰 문제가 없었기 때문에 2022-08-15 에 PR : 시퀄라이즈 셋팅 를 통해서 배포를 했습니다.
2. Actual behavior
실제로 2022-08-16 에 src/sequelize/models/index.js 를 호출했을 때부터 에러가 발생했습니다.
src/sequelize/models/index.js 에서 Cannot read property of undefined ( config.use_env_variable )
src/sequelize/migrations/20220813143102-create-user.js 에서 User 테이블에 defaultValue 누락 건
src/sequelize/models/User.js 에서 Unknown column 'id' in 'field list sequelize
3.A. Describe the bug - Cannot read property of undefined ( config.use_env_variable )
npx sequelize init 을 통해서 sequelize 를 손쉽게 설정할 수 있습니다.
해당 명령어를 입력하는 디렉토리에서 config/config.json 을 만들어주는데 거기서 사용하는 NODE_ENV 와 저희가 사용 중이던 NODE_ENV 가 달라서 생긴 문제였습니다.
Behavior
1. Expected behaviors
저희 팀은 프로젝트
루트 경로
가 아니라src
안에 서버 파일을 보관하고 있었습니다.따라서 하기의
npx sequelize
명령어 들도 src/sequelize 경로 아래에서 실행하였습니다.DB 연결부터 테이블 생성까지 큰 문제가 없었기 때문에
2022-08-15
에 PR : 시퀄라이즈 셋팅 를 통해서 배포를 했습니다.2. Actual behavior
실제로
2022-08-16
에src/sequelize/models/index.js
를 호출했을 때부터 에러가 발생했습니다.src/sequelize/models/index.js
에서 Cannot read property of undefined ( config.use_env_variable )src/sequelize/migrations/20220813143102-create-user.js
에서 User 테이블에 defaultValue 누락 건src/sequelize/models/User.js
에서 Unknown column 'id' in 'field list sequelize3.A. Describe the bug - Cannot read property of undefined ( config.use_env_variable )
npx sequelize init
을 통해서 sequelize 를 손쉽게 설정할 수 있습니다.해당 명령어를 입력하는 디렉토리에서
config/config.json
을 만들어주는데 거기서 사용하는 NODE_ENV 와 저희가 사용 중이던 NODE_ENV 가 달라서 생긴 문제였습니다.기존의 package.json
수정된 package.json
참고한 게시글로는 Stackoverflow - Cannot read property 'use_env_variable' of undefined 와 같습니다.
3.B. Describe the bug - User 테이블에 defaultValue 누락 건
npx sequelize 하위 명령어로 만든 테이블에서는 id, createdAt, updatedAt 를 자동으로 만들고 반영해준다고 알고 있었습니다.
당연히 default 값을 준다고 생각했지만 해당 기능이 작동하지 않았습니다. 아래 명령어를 보면 JPA 와 같이 느껴졌는데, ...
createdAt
과updatedAt
자리에 ? 가 아니라 DEFAULT 가 들어가야 하지 않나 라고 생각했습니다.sql: 'INSERT INTO `Users` (`id`,`email`,`nickname`,`password`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?);', parameters: [ 'work@gmail.com', 'unchap', 'password1234' ]
실제로 MySQL Workbench 를 통해서 DB 의 User 테이블을 확인해보니 DEFAULT 항목이 공란인 것을 확인할 수 있었습니다.
아마도 sequelize 가 암묵적으로 제공해주던 기능이 작동하지 않는 것 같아서 명시적으로 기능을 주고 싶었습니다.
따라서 Stackoverflow - Set defaultValue to todays date in a Sequelize migration 를 통해서 문제를 해결할 수 있었습니다.
src/sequelize/migrations/20220813143102-create-user.js
파일을 다음과 같이 수정하였습니다.3.C. Describe the bug - Unknown column 'id' in 'field list sequelize
역시나 migration 파일에서 id 를 userId 로 재정의 하였는데, 해당 부분이 정상 작동하지 않았습니다.
아마도
src/sequelize/mirgrations/**
와src/sequelize/models/**
가 동기화 되지 않아서 다음과 같이 명시적으로 수정해주었습니다.다음의 글을 참고하여 수정하였습니다.
Details
1. Environment
The text was updated successfully, but these errors were encountered: