NestJS 공식문서 번역 겸 공부하는 글 입니다.
의역 및 오역이 있을 수 있습니다.
https://docs.nestjs.com/fundamentals/async-providers

Asynchronous providers

때떄로, 애플리케이션은 하나 또는 그 이상의 비동기 작업이 끝날때까지 시작이 지연되어야한다. 예를 들어, 데이터베이스에 연결이 될때까지는 request를 받고싶지 않을 것이다. asynchronous provider를 사용하여 이를 해결할 수 있다.

이것을 위한 문법은 useFactory와 함께 async/await를 사용하는 것이다. factory는 Promise를 리턴하며, await를 사용해 비동기 작업을 대기할 수 있다. Nest는 이러한 provider에 의존하는 클래스가 인스턴스화 될때까지 대기한다.

{
  provide: 'ASYNC_CONNECTION',
  useFactory: async () => {
    const connection = await createConnection(options);
    return connection;
  },
}

[hint]
custom provider 문법에 대해 더 알고 싶으면 여기를 클릭.

Injection

asynchronous provider는 다른 provider와 마찬가지로 토큰을 통해 다른 컴포넌트에 주입될 수 있다. 위의 예제에서는 @Inject(‘ASYNC_CONNECTION’)을 사용하면 된다.

Example

TypeORM 챕터에 비동기 provider에 대한 더 많은 예제가 있다.