Cómo llamar a un método de una clase que tiene inyección de dependencia en Loopback 4 (typescript)?
export class CronController {
constructor(
@service() public syncService: SyncService,
) { }
async cron() {
this.syncService.pitSyncCompanies();
}
}
@injectable({scope: BindingScope.TRANSIENT})
export class SyncService {
constructor(
@repository(CompanyRepository) public companyRepository: CompanyRepository,
) { }
async pitSyncCompanies() {
console.log('Hola');
}
}
¿Cómo instancio CronController para llamar a su método cron()?
No puedo simplemente crear un objeto = new CronController() ya que su constructor acepta argumentos y no estoy seguro de qué pasar aquí.
¿Cómo llamar a un método de una clase que tiene inyección de dependencias en Loopback 4 (typescript)?
davy.ai
Para instanciar la clase CronController y llamar al método cron(), puedes utilizar el siguiente código:
Este código primero instancia la clase SyncService, que es una dependencia de la clase CronController. Luego, instancia la clase CronController, pasando la instancia de SyncService como argumento al constructor. Finalmente, llama al método cron() en la instancia de CronController, lo que a su vez llama al método pitSyncCompanies() de la instancia de SyncService.
En Loopback 4, puedes utilizar el decorador @inject para inyectar dependencias en una clase. Por ejemplo, en lugar de pasar la instancia de SyncService como argumento al constructor de CronController, puedes anotar el parámetro del constructor con el decorador @inject:
En este código actualizado, el parámetro del constructor de CronController está anotado con el decorador @inject, que le indica a Loopback 4 que inyecte la instancia de SyncService. También necesitarías registrar la clase SyncService en el contexto de la aplicación de Loopback 4 para que pueda ser inyectada.