This is my BaseRepository
export class BaseRepository<E> extends Repository<E> {
constructor(
private readonly helperService: HelperService,
target: EntityTarget<E>,
entityManager: EntityManager,
) {
super(target, entityManager);
}
async createEntity(entity: E) {
//
}
async getEntities(getEntitiesDto: GetEntitiesDto) {
//
}
test() {
// use function of HelperService
}
}
This is my UserRepository which extent BaseRepository
@Injectable()
export class UserRepository extends BaseRepository<User> {
constructor(helperService: HelperService, entityManager: EntityManager) {
super(helperService, User, entityManager);
}
}
I wonder is there any way to remove HelperService from constructor of UserRepository but UserRepository still use function test(), may be can change both Repository. I'd like UserRepository looks like:
@Injectable()
export class UserRepository extends BaseRepository<User> {
constructor(entityManager: EntityManager) {
super(User, entityManager);
}
}
or
@Injectable()
export class UserRepository extends BaseRepository<User> {
// no constructor :)
}
Thank for your attention.
Even if the injection through constructor is recommended (cf Why are constructor-based injections preferred over property-based injections in nestjs), you can still do a "Property Based Injection" as specified here : https://docs.nestjs.com/providers#property-based-injection
In your case it would look like that:
@Injectable()
export class UserRepository extends BaseRepository<User> {
@Inject()
private helperService: HelperService;
constructor(entityManager: EntityManager) {
super(User, entityManager);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With