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