nest.js으로 프로젝트를 만들기로 결정했다. 그래서 팀원들은 부랴부랴 nest 스터디를 가졌다. 프로젝트 환경설정도 하고, ERD 도 피드백 받으면서 다음 주엔 프로젝트를 바로 시작할 수 있도록 세팅도 했다.
스터디 중 나왔던 오류들을 정리
팀원 중 한명이 typeorm 엔티티와 레포지토리 설정 후, 실행을 시켰는데 데이터베이스 연결 오류가 났다.
1. .env 파일 ""(값 안에 큰 따옴표) 제거
2. mysql 아이디 비밀번호 재설정
3. 환경 변수 설정
4. 호스트 경로 :001 주석처리
5. 필요없는 코드 제거 등등
여러 가지 시도를 해봤는데 되지 않아 심지어 도커까지 도입했다.
결국, 문제는 .env 파일안에 코드를 줄바꿈할 때, ','(쉼표) 를 적어 연결 오류가 났었다. 쉼표 때문에 반나절을 삽질했던 경험이였다.
우연히 간단한 도커 사용법 까지 알게 됐다.
적당한 경로에 github 자료 클론
해당 경로 안에 .env.~ 파일을 카피해서 .env 파일 생성
vi 텍스트 편집기로 docker-compose 열고 정보들 편집(도커 이미지와 환경변수 선택)
실행시키면 도커 허브에 도커 이미지가 올려져 있다. 다운로드 하면 local 도커 컨테이너에 작은 가상 환경이 만들어지고 mysql 서버가 실행된다.
./start.sh 로 도커 실행
2 번째로 실행
도커를 사용해서 mysql 은 연결되었지만, vscode에서 nestjs 를 실행시키면 데이터베이스 연결 오류가 났었다. 결국 쉼표를 마지막에 발견해서 해결됐다..
유저와 장바구니의 관계를 계속 생각하고 있다. 튜터님께도 듣고, 생각한 관점을 정리하자면
보는 관점에 따라 관계가 바뀌어 복잡하던 찰나,좋은 예시를 들었는데 기준을 누가 더 많이 쓰냐(물리적 관점)으로 생각해보라는 것이였다.
만약 User와 WishLists , Parties 관계를 생각했을 때, Parties가 장바구니를 담는게 아닌 User가 Parties 를 장바구니에 담는것이기 때문에... 엥 생각해보니 이부분은 join 문을 어디에 사용할지 생각하는 것이 아닌가.. 오늘은 늦었으니 다시 생각해보고 수정해보자..
DB관계이해 블로그
여기 블로그 글을 보고 확실히 이해할 수 있었다.
테이블의 레코드를 얼마나 더 많이 참조하느냐에 따라 1:N 관계가 정해진다는 기준을 잡으면 될 것 같다.
예시로 User는 WishLists 의 모든 레코드를 필요하지만, WishLists는 User 의 세세한 정보까진 필요 없다. 그렇기 때문에 User 와 WishLists 는 1:N 관계이다.
이런식으로 정의해나가면 될것같다!