TypeORM forRoot vs forRootAsync
TypeORM forRoot vs forRootAsync
Nest.js에서 TypeORM을 사용하며 차이점이 궁금하여 정리
forRoot
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'password',
database: 'test',
entities: [],
synchronize: true,
})
]
})
위의 예시와 같이 사용
1.정적인 값을 바로 제공할때 사용.
2.환경 변수나 외부 설정에 의존하지 않을때 사용.
forRootAsync
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
type: 'mysql',
host: configService.get('DB_HOST'),
port: configService.get('DB_PORT'),
username: configService.get('DB_USERNAME'),
password: configService.get('DB_PASSWORD'),
database: configService.get('DB_NAME'),
entities: [],
synchronize: true,
}),
inject: [ConfigService],
}),
],
})
위와 같이 사용
1 비동기적으로 설정을 사용할때.
2.환경 변수나 설정 파일에서 동적으로 값을 가져와야 할때.
3.다른 서비스에 의존성이 있을때.
정리
forRootAsync는 데이터 베이스의 절정 값에 대해 환경에 따라
동적인 값이 필요 할때 사용한다.
잠깐 테스트 할때 말고는 보통 forRootAsync를 사용한다고 보면 된다.
# TypeORM forRoot vs forRootAsync Nest.js에서 TypeORM을 사용하며 차이점이 궁금하여 정리 ### forRoot ```js @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'test', entities: [], synchronize: true, }) ] }) ``` >## 위의 예시와 같이 사용 > >1.정적인 값을 바로 제공할때 사용. > >2.환경 변수나 외부 설정에 의존하지 않을때 사용. ### forRootAsync ```js @Module({ imports: [ TypeOrmModule.forRootAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ type: 'mysql', host: configService.get('DB_HOST'), port: configService.get('DB_PORT'), username: configService.get('DB_USERNAME'), password: configService.get('DB_PASSWORD'), database: configService.get('DB_NAME'), entities: [], synchronize: true, }), inject: [ConfigService], }), ], }) ``` > ## 위와 같이 사용 > >1 비동기적으로 설정을 사용할때. > >2.환경 변수나 설정 파일에서 동적으로 값을 가져와야 할때. > >3.다른 서비스에 의존성이 있을때. ### 정리 forRootAsync는 데이터 베이스의 절정 값에 대해 환경에 따라 동적인 값이 필요 할때 사용한다. 잠깐 테스트 할때 말고는 보통 forRootAsync를 사용한다고 보면 된다.