External Dependencies
If you are going to use a built-in DI container,your aggregate constructor can accept instances of the services it depends on, they will be injected automatically upon each aggregate instance creation:
class UserAggregate extends AbstractAggregate {
constructor({ id, events, authService }) {
super({ id, events, state: new UserAggregateState() });
// save injected service for use in command handlers
this._authService = authService;
}
async signupUser(payload, context) {
// use the injected service
await this._authService.registerUser(payload);
}
}