종종 어플리케이션의 시작은 한 개 이상의 비동기 작업이 완료될 때까지 지연되어야 합니다. 예를 들어, 데이터베이스의 연결이 설립될 때까지 요청이 들어오는 것을 원치 않을 수 있습니다. 비동기 프로바이더를 사용하면 해결할 수 있습니다.
이에 대한 문법은 useFactory 문법과 함께 async/await를 사용하는 것입니다. 팩토리는 Promise를 반환하며 팩토리 함수는 비동기 작업을 await를 사용해 대기할 수 있습니다. Nest는 프로바이더에 의존 혹은 주입하는 모든 클래스의 인스턴스화 이전에 프로미스의 처리를 기다릴 수 있게 만들어 줍니다.
{
provide: 'ASYNC_CONNECTION',
useFactory: async () => {
const connection = await createConnection(options);
return connection;
},
}
주입
비동기 프로바이더들은 다른 프로바이더가 그러하듯, 그들의 토큰에 의해 다른 컴포넌트로 주입됩니다. 위의 코드를 예로 들면, @Inject('ASYNC_CONNECTION')
을 사용할 수 있습니다.
'Node.js > NestJS' 카테고리의 다른 글
[NestJS - Microservice] NestJS로 마이크로서비스 구축해보기(RabbitMQ, MongoDB, Docker) - 1. 프로젝트 세팅 (0) | 2022.11.14 |
---|---|
[NestJS - Caching] 15분 안에 NestJS에서 캐싱 사용해보기 (2) | 2022.11.11 |
[NestJS] 11. 커스텀 프로바이더 (0) | 2022.10.02 |
[NestJS] 10. 커스텀 데코레이터 (1) | 2022.10.01 |
[NestJS] 9. 인터셉터 (1) | 2022.10.01 |