Node.js/NestJS
[NestJS] 12. 비동기 프로바이더
턴태
2022. 10. 2. 10:45
종종 어플리케이션의 시작은 한 개 이상의 비동기 작업이 완료될 때까지 지연되어야 합니다. 예를 들어, 데이터베이스의 연결이 설립될 때까지 요청이 들어오는 것을 원치 않을 수 있습니다. 비동기 프로바이더를 사용하면 해결할 수 있습니다.
이에 대한 문법은 useFactory 문법과 함께 async/await를 사용하는 것입니다. 팩토리는 Promise를 반환하며 팩토리 함수는 비동기 작업을 await를 사용해 대기할 수 있습니다. Nest는 프로바이더에 의존 혹은 주입하는 모든 클래스의 인스턴스화 이전에 프로미스의 처리를 기다릴 수 있게 만들어 줍니다.
{
provide: 'ASYNC_CONNECTION',
useFactory: async () => {
const connection = await createConnection(options);
return connection;
},
}
주입
비동기 프로바이더들은 다른 프로바이더가 그러하듯, 그들의 토큰에 의해 다른 컴포넌트로 주입됩니다. 위의 코드를 예로 들면, @Inject('ASYNC_CONNECTION')
을 사용할 수 있습니다.