-
Notifications
You must be signed in to change notification settings - Fork 0
2023 03 29 개발 일지
Jinho Kim edited this page Mar 29, 2023
·
1 revision
- @nestjs/config의 ConfigModule과, ConfigService를 사용
- @nestjs/typeorm의 TypeOrmOptionsFactory, TypeOrmModuleOptions를 사용
- typeorm-naming-strategies의 SnakeNamingStrategy을 사용
- 의존성 주입(Defendency Injection): 모듈 간의 결합도를 낮추고 유지보수성이 높음.
각 모듈이 어떤 역활을 가지는지 쉽게 알 수 있고, 효율적인 코드 작성이 가능함. - Entity: 데이터베이스 테이블의 인터페이스 같은 느낌
- DTO: 데이터 객체
EX) 회원가입 할 때 userid, password, name 등등이 있는데 이걸 한 번씩 받는 것은 너무 비효율적임
데이터 객체를 만들어서 한 번에 보내는 것이 당연히 좋음. - Validation: DTO를 만들 때, IsString, IsNumber 등등의 데코레이터를 사용해서 들어오는 데이터를 쉽게 검사할 수 있음
- Transform: 데코레이터 기반의 직렬화/역직렬화 라이브러리로 타입을 맞추는 데 큰 도움을 주는 것 같음
- Repository 패턴
db의 캡슐화라고 보면 쉬울 것 같다.
db에 접근하는 로직만 따로 Repository Layer로 분리함.
각각의 서비스가 비즈니스 로직에 더 집중할 수 있고, 코드 중복 최소화, 모듈 간의 책임, 분리가 명확해짐.
- EntityRepository가 0.3 버전부터 없어서 CustomRepository를 만들어야 했음...
참조(https://stackoverflow.com/questions/71557301/how-to-workraound-this-typeorm-error-entityrepository-is-deprecated-use-repo) - Custom Repository를 만들고 나서 아 이제 get, post 같은 메서드 만들어야겠다 싶었지만,
Repository 객체에 내장된 메서드들이 있어서 기본적인 것들은 만들지 않아도 됐었다. 너무 유용하다! - 아직 정확하게 이유를 모르겠는데 지정한 데이터의 entity의 이름에 맞게 알아서 Table이 생긴다.
Repository 생성될 때 알아서 되는 것 같다.
- user controller에서 Post, Body 데코레이터를 통해 Request Body(type: CreateUserDto)를 받음
- 받은 데이터를 user service에 넘겨줌.
- user service에서 user repository의 save 메서드를 사용해서 user 데이터를 DB에 추가함
코드만 봐도 실제로 DB랑 관련된 일을 하는 메서드는 user service에 없음. user repository가 다 해줌!