node.js - NestJS llama a un servicio asíncrono en la inicialización
En mi aplicación NestJS tengo un servicio que utiliza un servicio de fábrica para inicializar algún tipo de adaptador. Dado que todos los métodos en mi servicio necesitan usar el adaptador inicializado por el servicio de fábrica, me preguntaba si hay alguna manera de llamar al servicio de fábrica solo una vez. No puedo hacerlo en el constructor porque es una llamada asíncrona.
¿Cuál es la mejor manera de lograrlo?
Este es mi servicio:
@Injectable()
export class MyService {
constructor(
private readonly factoryService: FactoryService
) {}
y esta es la llamada que necesito hacer:
await this.factoryService.createAdapter(adapter);
Respuesta #1
Parece que si inicializas este servicio (o un subservicio) de manera asincrónica, podrás manejar tu fábrica. Me encontraba en una situación similar cuando encontré en la documentación de Nest JS los proveedores asincrónicos.
https://docs.nestjs.com/fundamentals/async-providers
Se sentía como una solución inelegante (y demasiado trabajo dividir la inicialización en otro subservicio...) así que al menos por ahora usé una variable para verificar el estado, pero en algún momento más adelante, usaré el enfoque documentado.
Si eliges usar el ejemplo basado en la documentación, encontré su receta de TypeORM como un buen ejemplo de cómo configurarlo correctamente.
https://docs.nestjs.com/recipes/sql-typeorm
Espero que esto ayude. ¡Por favor comenta cualquier opinión!
