-
Notifications
You must be signed in to change notification settings - Fork 203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to inject a custom repository #39
Comments
So far I am implementing like this. project.repository.ts import { Connection, EntityRepository } from 'typeorm';
import { Project } from './project.entity';
import { Injectable } from '@nestjs/common';
import { AuditMongoRepository } from '../core/repositories/audit-mongo.repository';
@Injectable()
@EntityRepository(Project)
export class ProjectRepository extends AuditMongoRepository<Project> {
}
export const ProjectRepositoryProvider = {
provide: 'ProjectRepository',
useFactory: (connection: Connection) => connection.getCustomRepository(ProjectRepository),
inject: [Connection],
}; audit-mongo.repository.ts export abstract class AuditMongoRepository<Entity> extends MongoRepository<Entity> {
// overwrite some methods for audit
} project.module.ts @Module({
imports: [
SharedModule,
TypeOrmModule.forFeature([Project])],
providers: [
ProjectService,
ProjectRepositoryProvider,
],
controllers: [ProjectController],
})
export class ProjectModule {} project.service.ts @Injectable()
export class ProjectService {
private readonly logger = new Logger(ProjectService.name);
constructor(
private readonly projectRepository: ProjectRepository,
) {
}
} |
I also see following implementation, but it doesn't work for me :( |
I think that this is not the way to solve this problem, because @kamilmysliwiec did not respond to the next comments in the thread #14. Functionality is theoretically merged, but it is hard for me to understand how to implement it only after the changes .. A more important problem is that the TypeOrm documentation does not recommend the global registration of custom repositories, as they are not a single instance . |
Looks like custom repositories are injected same way like entities https://github.com/evebook/api/tree/master/src/modules/character |
@xmlking Yeah, they are injected same way as entities. It was added with this PR #12 It should probably be noted in documentation that there is a way of injecting them... EDIT: It is documented in the docs https://docs.nestjs.com/techniques/database under |
So is there anything that still should be clarified? |
@kamilmysliwiec - that only demonstrates how to set up the entity. |
Hello everyone, I ran into the same issue and I finally figured it out how to do it. I don't agree with the first answer given because you aren't supposed to make the repository a provider/service as is written here. This is not documented so that's why I'd like to share how I did it. Edit: I created a separate issue that can be found here. You can find the answer there. |
Just created an issue in the documentation repository. I'll use @MattIzSpooky example and share solution very soon :) |
Sadly this link is broken 😿 |
[x] Support request
Hi. How to inject a custom repository http://typeorm.io/#/custom-repository ? And second question this indicates that we shouldn't be creating services from custom repositories, especially if you want to use transactions. What do you think
? Best Regards
The text was updated successfully, but these errors were encountered: