https://nodejs.org/en/ (설치되어 있다면 건너뛰기)
npm i -g @nestjs/cli
nest new porject-name 또는 nest new ./ (폴더 안에서 nest 기본구조 생성)
nest g module 모듈명
nest g mo 컨트롤러명
nest g controller 컨트롤러명 --no-spec
nest g co 컨트롤러명
※ --no-spec : 테스트를 위한 소스 코드 자동 생성을 비활성화한다.
nest g service 서비스명 --no-spec
nest g s 컨트롤러명
컨트롤러, 서비스, 모듈을 한번에 생성한다.
nest g resource 리소스명
nest g res 리소스명
HTTP 요청 또는 응답을 가로채는 인터셉터를 생성한다.
nest g interceptor 인터셉터명
nest g middleware 미들웨어명
파이프를 생성. 입력값을 가공하거나 검증하는데 사용된다.
nest g pipe 파이프명
웹소켓과 같은 실시간 통신을 다루는 게이트웨이를 생성한다.
nest g pipe 게이트웨이명
pnpm i typeorm @nestjs/typeorm mysql2
package.json에 추가
"pretest:e2e": "cd test && docker compose up -d && pwd",
"test:e2e": "jest --config ./test/jest-e2e.json",
"posttest:e2e": "cd test && docker compose rm -vsf && rm -rf .tmp",
"e2e": "jest --config ./test/jest-e2e.json --watch"
환경변수를 관리하는 라이브러리
.env 파일을 사용하여 환경 변수를 로드하고 관리한다..env 파일 생성하여 키-값 쌍 형태로 환경 변수를 정의process.envpnpm i --save dotenvDB_HOST=localhost
DB_PORT=5432
목적: .env 파일뿐만 아니라 다양한 소스(환경 변수, 환경별 파일, 파일 등)에서 설정을 로드하고 관리한다.
정의 : ConfigModule을 사용하여 설정로드 후, 프로바이더를 통해 액세스한다.
사용방법 : get, getOrThrow
설치 : pnpm i @nestjs/config
// ConfigModule를 애플리케이션 모듈에 임포트
@Module({
imports: [ConfigModule.forRoot()],
})
// 설정을 사용하려는 서비스 또는 컴포넌트에서 ConfigService를 주입받아 사용
constructor(private configService: ConfigService) {}
getDatabaseHost(): string {
return this.configService.get<string>('DB_HOST');
}
get()
- 목적: get() 메서드는 데이터 구조나 설정 제공자에서 값을 가져오는 데 사용된다.
- 사용 방법: 주로 일부 속성 또는 설정을 제공하는 객체 또는 서비스에서 호출된다. 예를 들어, 구성 값을 가져오는 get() 메서드를 가진 구성 서비스가 있을 수 있다.
const databaseHost = configurationService.get('DB_HOST');getOrThrow()
- 목적: getOrThrow() 메서드는 get()과 유사하지만 요청한 값이 발견되지 않거나 특정 조건이 충족되지 않으면 추가로 예외나 오류를 발생시킬 수 있다.
- 사용 방법: 이 메서드는 특정 값이 존재할 것으로 예상되며, 그렇지 않으면 예외를 발생시켜 오류 상황을 처리하려고 할 때 유용하다.
try { const databaseHost = configurationService.getOrThrow('DB_HOST'); } catch (error) { console.error('데이터베이스 호스트를 가져오는 중 오류 발생:', error.message); }
pnpm install class-validator class-transformer --save data transformation, data validation 수행