I am new to NestJs and new to nodejs as well. I am trying to implement the following but getting error.
- I have few entities inside of an entity folder [see image]
- I have one repository folder which is having one custom repository, organizationRepository.ts like following
import { OrganizationEntity } from 'src/entity/organization.entity';
import { Repository } from 'typeorm';
import { EntityRepository } from 'typeorm';
@EntityRepository(OrganizationEntity)
export class OrganizationRepository extends Repository<OrganizationEntity> {
findById(id: string): Promise<OrganizationEntity> {
return this.findOne(id);
}
}
and also having an repository.module.ts inside repository folder
import { Module } from '@nestjs/common';
import { OrganizationRepository } from './organizationRepository';
@Module({
exports: [OrganizationRepository],
providers: [OrganizationRepository],
})
export class RepositoryModule {}
- I have one dao folder which is having one file OrganizationDao.ts like following
import { Inject, Injectable } from '@nestjs/common';
import { OrganizationEntity } from 'src/entity/organization.entity';
import { OrganizationRepository } from 'src/repository/organizationRepository';
@Injectable()
export class OrganizationDao {
constructor(private organizationRepository: OrganizationRepository) {}
findById(id: string): Promise<OrganizationEntity> {
return this.organizationRepository.findById(id);
}
}
and the following in dao.module.ts
import { Module } from '@nestjs/common';
import { RepositoryModule } from 'src/repository/repository.module';
import { OrganizationDao } from './OrganizationDao';
@Module({
imports: [RepositoryModule],
exports: [OrganizationDao],
providers: [OrganizationDao],
})
export class DaoModule {}
And finally one domain folder called organization which are 3 files - organization.controller.ts, organization.module.ts and organization.service.ts
service class is like following -
import { Inject, Injectable } from '@nestjs/common';
import { OrganizationDao } from 'src/dao/OrganizationDao';
@Injectable()
export class OrganizationService {
constructor(
@Inject('OrganizationDao')
private readonly organizationDao: OrganizationDao,
) {}
async findById(id: string): Promise<string> {
const org = await this.organizationDao.findById(id);
console.log('db : ' + JSON.stringify(org));
return `This action returns a organization`;
}
}
controller is like following -
import { Controller, Get, Param } from '@nestjs/common';
import { OrganizationService } from './organization.service';
@Controller('dev/api/')
export class OrganizationController {
constructor(private readonly organizationService: OrganizationService) {}
@Get('/organizations/:id')
findOne(@Param('id') id: string) {
return this.organizationService.findById(id);
}
}
and the organization.module be like following
import { Module } from '@nestjs/common';
import { OrganizationService } from './organization.service';
import { OrganizationController } from './organization.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { OrganizationRepository } from 'src/repository/organizationRepository';
import { DaoModule } from 'src/dao/dao.module';
@Module({
imports: [TypeOrmModule.forFeature([OrganizationRepository]), DaoModule],
controllers: [OrganizationController],
providers: [OrganizationService],
})
export class OrganizationModule {}
and in app.module.ts is like following
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DaoModule } from './dao/dao.module';
import { OrganizationEntity } from './entity/organization.entity';
import { OrganizationModule } from './organization/organization.module';
import { RepositoryModule } from './repository/repository.module';
@Module({
imports: [
OrganizationModule,
DaoModule,
RepositoryModule,
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 9092,
username: 'dev',
password: 'dev',
database: 'dev',
entities: [OrganizationEntity],
synchronize: false,
}),
],
})
export class AppModule {}
Now when I am running the application, I am getting the following error:
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'src/repository/repository.module'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (C:\Users\admin\Documents\my-first-nest-project\dist\src\dao\dao.module.js:12:29)
I cannot understand what I am doing wrong? Even if I make the RepositoryModule as Global() then also getting the same error at same line.