can't inject custom repository without @InjectRepository decorator

Viewed 35

In NestJS Documentation, it says that when I make custom repository, I don't need to use @InjectRepository() decorator docs

But in my code, I cannot inject my custom repository like that

these are my codes

app.module.ts

@Module({
  imports: [
    CacheModule.register(),
    ConfigModule.forRoot({
     isGlobal: true
    }),
    TypeOrmModule.forRootAsync({
      useFactory: () => ({
        type: 'postgres',
        host: process.env.DB_HOST,
        port: +process.env.DB_PORT,
        username: process.env.DB_NAME,
        password: process.env.DB_PASSWORD,
        database: process.env.DB_DATABASE,
        entities: [`${__dirname}/**/entities/*.entity{.ts,.js}`],
        synchronize: true,
        logging: true
      })
    }),
    GraphQLModule.forRoot<ApolloDriverConfig>({
      driver: ApolloDriver,
      cors: {
        origin: 'http://localhost:3000',
        credentials: true
      },
      autoSchemaFile: 'schema.gql'
    }),
    AuthModule,
    UserModule,
  ]
})
export class AppModule {}

user.repository.ts

@EntityRepository(User)
export class UserRepository extends Repository<User> {}

user.module.ts

@Module({
  imports: [TypeOrmModule.forFeature([UserRepository]), CacheModule.register()],
  providers: [
    UserResolver,
    UserService,
  ],
  exports: [UserService, TypeOrmModule]
})
export class UserModule {}

user.service.ts

@Injectable()
export class UserService {
  constructor(
    private readonly userRepository: UserRepository,

    @Inject(CACHE_MANAGER) private cacheManager: Cache
  ) {}
}

error message

ERROR [ExceptionHandler] Nest can't resolve dependencies of the UserService (?, CACHE_MANAGER). Please make sure that the argument UserRepository at index [0] is available in the UserModule context.

Potential solutions:
- If UserRepository is a provider, is it part of the current UserModule?
- If UserRepository is exported from a separate @Module, is that module imported within 
UserModule?
  @Module({
    imports: [ /* the Module containing UserRepository */ ]
  })

I don't want to use @InjectRepository(UserRepositry) decorator. How can I do that?

0 Answers
Related