bus
bus copied to clipboard
IoC with loopback
Hi to all ! I started using the library a few months ago and it's all working fine using loopback framework, but having some issues when handlers are called as they have no application context. Tried to setup the ".withContainer" with no luck, did someone used this with Loopback.io ?
https://bus.node-ts.com/guide/dependency-injection
regards
Hi @pferioli! Could you provide a small example of what you're seeing re loopback and the handler context? I'll have a look
I wanted to understand if it's possible to setup using "withContainer" the loopback app so everything is already binded there while booting. I wasn't able to pass a "container" like the one in the example
.withContainer({
get <T>(type: ClassConstructor<T>) {
return container.get<T>(type)
}
})
when the handler (as function) is invoked, there's no app context related so i created manually a new ctx and binded all the services i required to process the request. This requires to bind all manually. Asked in the LB4 slack channel some time ago but with no luck
const validateTicketHandler = handlerFor(ValidateTicketCommand,
async (event: ValidateTicketCommand) => {
const ctx = new Context();
ctx.bind('services.TicketManagerService').toClass(TicketManagerService)
try {
const ticketManagerService: TicketManagerService = await ctx.get('services.TicketManagerService');
ticketManagerService.validateIncident(event.incomingEvent);
} catch (error) {
console.error(error)
}
}
);
Hi @pferioli . We have been using this library with Loopback 4 handler classes successfully using container.getSync(). However, the only issue we faced is that we can't use constructor parameters in our handler class that require async operations because Loopback will throw exception. I have opened a PR #191 which resolves this limitation.
@manarhusrieh thanks for the support for some reason i didn't see your message until now, really sorry for that. I'd been working in some other projects and i wanted to use this library in a new one. Is it possible to share some snippet on how you did the bus initialization in loopback, for older projects i used function handlers successfully.