12. Asynchronous providers

때때로 하나 이상의 비동기 작업이 완료될 때까지 애플리케이션 시작을 지연해야 할 필요가 있다. 예를 들어, 데이터베이스와의 연결이 설정될 때까지 요청을 수락하면 안된다. 비동기 공급자를 사용하면 이를 구현할 수 있다.

이에 대한 async/await구문은 useFactory 구문과  함께 사용하는 것이다 . 팩토리는 Promise 를 반환하고 팩토리 함수는 await비동기 작업을 수행할 수 있다. Nest는 그러한 공급자에 의존(주입)하는 클래스를 인스턴스화하기 전에 프라미스가 리졸브 되기를 기다린다.

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

 

주입

비동기 공급자는 다른 공급자와 마찬가지로 토큰을 통해 다른 구성 요소에 주입된다. 위의 예에서는 데이터베이스 커넥션을 주입받고자 하는 클래스의 생성자에서  @Inject('ASYNC_CONNECTION') 구문을 사용할 수 있다. TypeORM 레시피에는 비동기 공급자의 보다 실질적인 예가 있으니 참고하기 바란다.

'Backend(Framework) > NestJS 개요(공식문서 번역)' 카테고리의 다른 글

14. Injection scopes  (1) 2023.12.02
13. Dynamic modules  (1) 2023.12.02
11. Custom provider  (1) 2023.11.19
10. Custom decorators  (0) 2023.11.19
9. Interceptors  (0) 2023.11.19
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유