在完全遵循以下教程之后:https://www.youtube.com/watch?v=JK5aynTxKjM&list=PL4bT56Uw3S4zIAOX1ddx8oJS6jaD43vZC
我决定做我的crud基于这一点:我用我的类别(类别)测试了TypeORM,所以只是一个简单的表,没有外键或任何东西,它的工作就像一个魅力和程序运行CRUD.我说,所以我决定做几个表,包括“ProjectsLabo”表,有两个外键.
但问题是,当我在我的模块中合并其他三个模块时,我有一个错误:错误[ExceptionHandler] Nest无法解析ProjetslaboService(?)的依赖项。请确保索引[0]处的参数ProjetslaboDtoRepository在ProjetslaboModule上下文中可用。
潜在解决方案:
- ProjetslaboModule是否为有效的NestJS模块?
- 如果ProjetslaboDtoRepository是提供程序,它是否是当前ProjetslaboModule的一部分?
- 如果ProjetslaboDtoRepository是从单独的@Module导出的,那么该模块是否导入到ProjetslaboModule中?
@Module({
imports: [ /* the Module containing ProjetslaboDtoRepository */ ]
})
错误:Nest无法解析ProjetslaboService(?)的依赖项。请确保索引[0]处的参数ProjetslaboDtoRepository在ProjetslaboModule上下文中可用。
潜在解决方案:
- ProjetslaboModule是否为有效的NestJS模块?
- 如果ProjetslaboDtoRepository是提供程序,它是否是当前ProjetslaboModule的一部分?
- 如果ProjetslaboDtoRepository是从单独的@Module导出的,那么该模块是否导入到ProjetslaboModule中?
@Module({
imports: [ /* the Module containing ProjetslaboDtoRepository */ ]
})
以下是LaboProjects模块的示例:
projetslabo.dto.ts
import { IsNotBlank } from "../../decorators/is-not-blank.decorator";
export class ProjetslaboDto {
//@IsString()
//@IsNotEmpty()
@IsNotBlank({message : 'Serveur : the name is not empty'})
nom?: string;
}
projetslabo.controller.ts
@Controller('projetslabo')
export class ProjetslaboController {
constructor(private readonly projetslaboService: ProjetslaboService) {
}
@Get()
async GetAll() {
return await this.projetslaboService.getAll();
}
@Get(':id')
async GetOne(@Param('id', ParseIntPipe) id: number) {
return await this.projetslaboService.findById(id);
}
}
projetslabo.entity.ts
@Entity({ name: 'projetslabo' })
export class ProjetslaboEntity {
@PrimaryGeneratedColumn()
idProjetsLabo: number;
@Column({ type: 'varchar', length: 40, nullable: false })
nom: string;
@ManyToOne(() => ValeurslaboEntity, (ValeurslaboEntity) => ValeurslaboEntity.idValeursLabo , {nullable : false})
FK_idValeursLabo: ValeurslaboEntity
@ManyToOne(() => AnneeslaboEntity, (AnneeslaboEntity) => AnneeslaboEntity.idAnneesLabo, {nullable : false})
FK_idAnneesLabo: AnneeslaboEntity
}
Projetslabo.module.ts
@Module({
imports: [TypeOrmModule.forFeature([ProjetslaboEntity])],
providers: [ProjetslaboService],
controllers: [ProjetslaboController],
})
export class ProjetslaboModule {}
projetslabo.repository.ts
@EntityRepository(ProjetslaboEntity)
export class ProjetslaboRepository extends Repository<ProjetslaboEntity>{}
projetslabo.service.ts
@Injectable()
export class ProjetslaboService {
constructor(
@InjectRepository(ProjetslaboDto)
private projetslaboRepository: ProjetslaboRepository,){}
async getAll(): Promise<ProjetslaboEntity[]> {
const list = await this.projetslaboRepository.find();
if (!list.length) {
throw new NotFoundException(
new MessageDto('Serveur : La liste est vide'),
);
}
return list;
}
async findById(idProjetsLabo: number): Promise<ProjetslaboEntity> {
const annees = await this.projetslaboRepository.findOneBy({
idProjetsLabo,
});
if (!annees) {
throw new NotFoundException(
new MessageDto("Serveur : Cette année n'existe pas"),
);
}
return annees;
}
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: '.env',
isGlobal: true,
}),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
type: 'mariadb',
host: configService.get<string>(DB_HOST),
port: +configService.get<number>(DB_PORT),
username: configService.get<string>(DB_USER),
password: configService.get<string>(DB_PASSWORD),
database: configService.get<string>(DB_DATABASE),
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true,
logging: true,
}),
inject: [ConfigService],
}),
CategoriesModule,
/*Problem with this 3 modules
ProjetslaboModule,
ValeurslaboModule,
AnneeslaboModule,
*/
],
controllers: [AppController],
providers: [AppService]
})
export class AppModule {}
你能帮帮我吗?雀巢/核心:9.0.0嵌套/类型:9.0.1
1条答案
按热度按时间yqhsw0fo1#
当你应该传递
ProjetslaboEntity
的时候,你把ProjetslaboDto
传递给了你的@InjectRepository()
,因为这是你告诉TypeOrmModule.forFeature()
的。