해결된 질문
작성
·
309
0
이전강의떄 app.module.ts에서 외부에서 Env값을 불러오는 방법도 있다는것을 알려주셧는데
const getEnv = async () => {
//외부에 저장된 Env값
// const response = await axios.get("/loadEnv")
// return response.data;
return {
DB_PASSWORD: '~~~',
};
};
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true, load: [getEnv] }),
UsersModule,
ChannelsModule,
DmsModule,
WorkspaceModule,
TypeOrmModule.forRoot({
type: 'mariadb',
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT, 10),
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: ['entities/*.js'],
// autoLoadEntities: true, // TypeOrmModule.forFeature 내의 entities를 읽어서 자동 연결
synchronize: true,
logging: true,
keepConnectionAlive: true, //핫리로딩시 연결종료 방지
charset: 'utf8mb4',
}),
],
controllers: [AppController],
providers: [AppService, ConfigService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes('*');
}
}
@Injectable()
export class AppService {
constructor(private configService: ConfigService) {}
getHello() {
return this.configService.get('PORT');
}
}
제가 이해한 바에 따르면 app.module.ts 에서 ConfigModule을 임포트하여 app.service.ts에서 ConfigService를 사용하여 외부 env값을 사용할수 있는데
app.module.ts 에서도 자체적으로 외부env를 이용하여 db설정값을 지정할수 있는지 궁금합니다.
답변 1
0
https://docs.nestjs.com/techniques/database#async-configuration
여기서 forRootAsync처럼 configModule import를 지원한다면 factory 함수에서 configService를 불러와서 가능합니다. 모든 모듈이 이걸 지원하는 것은 아니긴 합니다.
forRoot를 비동기로 지원해 주는 기능이 있었군요!
답변 감사합니다.