TypeORM setup 과 Nestjs Config
728x90
postgresql 을 사용할 것이고 postgresql 이 설치되어 있따는 가정하에 진행 합니다.
실행 환경은 MAC OS 입니다.
nestjs 에서 typeorm 을 사용하기 위해서 다음과 같이 설치합니다.
npm i --save @nestjs/typeorm typeorm pg
app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { GraphQLModule } from '@nestjs/graphql';
import { TypeOrmModule } from '@nestjs/typeorm';
import { RestaurantsModule } from './restaurants/restaurants.module';
@Module({
// Graphql 의 root 모듈을 설정
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: process.env.NODE_ENV === 'dev' ? '.env.dev' : '.env.test',
// production 환경일 때는 configModule이 환경변수 파일을 무시합니다.
ignoreEnvFile: process.env.NODE_ENV === 'prod',
}),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
// typeorm 이 db에 연결할때 데이터베이스를 모듈의 현재 상태로 마이그레이션 한다는
synchronize: true,
logging: true,
}),
RestaurantsModule,
GraphQLModule.forRoot({
// autoSchemaFile: join(process.cwd(), 'src/schema.gql'), // 경로에 gql 파일을 생성
autoSchemaFile: true, // 메모리가 파일을생성하도록 설정
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
ConfigModule 과 TypeOrmModule 이 추가되었습니다.
TypeOrmModule
TypeOrmModule 의 forRoot 에서 postgres 의 host, port, username 등의 정보를 입력합니다.
synchronize 의 옵션은 typeorm 이 db에 연결할때 데이터베이스를 모듈의 현재 상태로 마이그레이션 한다는 뜻입니다.
product 환경과 dev, test 환경을 각각 구성해주기 위해서 .env 파일을 사용합니다.
Nestjs 에서는 .env 파일 최상위에서 실행되는 nestjs config 를 사용할게요
가상 변수를 설정하기위해 cross-env도 설치합니다.
npm i --save @nestjs/config
npm i cross-env
.env.dev, .env.prod, .env.test 파일을 만든뒤 package.json 으로 이동합니다.
"start": "cross-env NODE_ENV=prod nest start",
"start:dev": "cross-env NODE_ENV=dev nest start --watch",
test 환경은 제외한 product 와 dev 를 설정 입니다.
cross-env 는 MACOS Linux window 에서 모두 돌아가게 하기 위함이고 NODE_ENV는 process.env.NODE_ENV
를 사용하기위한 변수 입니다.
ConfigModule.forRoot({
isGlobal: true,
envFilePath: process.env.NODE_ENV === 'dev' ? '.env.dev' : '.env.test',
// production 환경일 때는 configModule이 환경변수 파일을 무시합니다.
ignoreEnvFile: process.env.NODE_ENV === 'prod',
}),
그런뒤 ConfigModule 을 셋업 하면 정상적으로 서버가 실행됩니다.
npm run start:dev
728x90
'Side > uber-eats' 카테고리의 다른 글
Nestjs - User model (0) | 2021.06.01 |
---|---|
Nestjs - Typeorm Repository 사용하기 (0) | 2021.05.31 |
NestJs Validating ArgsTypes (0) | 2021.05.23 |
Nestjs - InputTypes and ArgumentTypes (0) | 2021.05.22 |
NestJs - Arguments (0) | 2021.05.22 |
댓글
이 글 공유하기
다른 글
-
Nestjs - User model
Nestjs - User model
2021.06.01 -
Nestjs - Typeorm Repository 사용하기
Nestjs - Typeorm Repository 사용하기
2021.05.31 -
NestJs Validating ArgsTypes
NestJs Validating ArgsTypes
2021.05.23 -
Nestjs - InputTypes and ArgumentTypes
Nestjs - InputTypes and ArgumentTypes
2021.05.22