작성
·
185
0
안녕하세요 제로초님!
저는 sleact backend 강좌를 먼저 수강한 뒤 제가 만든 server로 현재 frontend 강좌를 수강 중입니다
현 강의 내용 중 Workspaces 태그로 user data 내 Wokrspaces 값을 받아 처리하는 중 해당 값이 빈값이어서 오류가 발생합니다.
이제와서 보니 /api/users 요청을 통해 받은 값 중 Workspaces 값이 빈 값으로 들어오고 있었네요... DB 테이블엔 정상적으로 workspace 가 존재하고, 나머지 user data(id, email, nickname)은 정상적으로 응답합니다. 백엔드 코드 문제 같은데 어디에 질문을 드려야 할지 애매해서 우선 여기에 작성합니다 ㅠ
백엔드 코드 내 user controller 의 api/users 처리 부분은
이처럼 문제가 없어보이고, entities/Users 나 다른 부분을 찾아봐도 이게 어디서 꼬이는건지 감을 못잡겠어서 조언을 받고자 질문 드립니다...
제가 현재까지 작성한 코드 깃헙 주소는 https://github.com/ljg0230/slack_clone 입니다.
답변 1
0
workbench쪽에서 테이블 생성될 때 createdAt 컬럼에 default 옵션이 설정 안 된 것 같습니다. 그게 설정이 돼야 값을 자동으로 넣어줍니다. 이게 설정이 안 되더라도 sequelize는 값을 넣어주는데 typeorm은 안 넣어줍니다. orm 특성 차이입니다
답변 감사드립니다!
말씀해주신 workspace entity 코드는 현재
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
이렇게 작성해두었고, 제로초님의 git 코드와 동일합니다. 혹시 여기에 default: true 옵션을 넣어야 한다는 말씀이신가요?
아...넵 답변 감사드립니다!
근데 이전에 진행할땐 이런 문제가 없었는데 한 번 디비 삭제 후 synchronize 해준 이후에 이런 문제가 계속 생기네요.. 코드는 그대로인데 테이블 생성 시 뭐가 날라간건지 ..
디비 스키마를 synchronize 를 통해 생성해서 말씀하신 default option들이 안들어있었던게 문제였네요....ㅎㅎ typeorm cli 의 schema:sync 명령어로 테이블을 생성하니 정상적으로 생성이 됩니다!
위 문제는 해결했지만..
QueryFailedError: Field 'createdAt' doesn't have a default value
라는 에러로 workspace 생성을 실패하는데 이 부분은 이해가 잘 안가서요ㅜ
my sql 의 my.cnf 파일에서 strict 모드를 해제하면 에러는 안나지만 각 테이블의 createAt이나 updatedAt 등의 컬럼에 값이 제대로 안들어갑니다!
제로초님의 nest 서버 코드로 실행해도 현상이 같아서요.. 근데 이상하게 제로초님의 express 서버 코드로 실행하면 에러없이 잘 작동하네요 혹시 짐작가시는 부분이 있으신가요?