gpt4 book ai didi

nestjs - 在实体 NestJS 中使用模块服务

转载 作者:行者123 更新时间:2023-12-05 02:47:24 30 4
gpt4 key购买 nike

在 NestJS API 上,我想在实体中使用模块服务,以使用非数据库属性填充该实体。

在我的例子中,我想获得我正在检索的类别的文章数量。

@Entity({ name: 'categories' })
export class Category {
constructor(private readonly service: CategoriesService) { }

@PrimaryGeneratedColumn()
id: number;

@Column()
@Index({ unique: true })
title: string;

@OneToMany(() => Article, articles => articles.category)
articles: Article[];

numberOfExercices: number;

@AfterLoad()
async countExercices() {
this.numberOfExercices = await this.service.getNumberOfArticles(this.id);
}
}

但是我得到这个错误:

Nest can't resolve dependencies of the GlobalPrevCategoriesService (GlobalPrevCategoriesRepository, ?).
Please make sure that the argument dependency at index [1] is available in the GlobalPrevCategoriesModule context.

我尝试了这个小变体,但我得到了同样的错误。

constructor(
@Inject(GlobalPrevCategoriesService)
private readonly service: GlobalPrevCategoriesService) { }
)

这是我的模块:

@Module({
imports: [
TypeOrmModule.forFeature([CategoriesRepository]),
ArticlesModule
],
controllers: [CategoriesController],
providers: [CategoriesService],
exports: [CategoriesService]
})
export class CategoriesModule { }

甚至可以将服务用于实体吗?

最佳答案

我认为不可能将服务注入(inject)到实体中。 ORM 模块(例如 TypeORM)实例化实体。而ORM并不知道NestJs框架中的依赖注入(inject)机制。

您可以查看 Active-Record pattern在 TypeORM 中。它解决了您在加载后获取与类别实例相关的文章数量的问题。但它并不能帮助您将 CategoriesService 注入(inject)到您的类别实体中。

一般来说,将服务类注入(inject)到实体类中并不是一个好主意。

关于nestjs - 在实体 NestJS 中使用模块服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65006550/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com