Nest 中 TypeORM 的正确用法:如何解决 BookEntityRepository 在 AppModule 中不可用的错误?

Nest 中 TypeORM 的正确用法:如何解决 BookEntityRepository 在 AppModule 中不可用的错误?

nest 中 typeorm 的正确用法

为了利用 nest 中强大的 typeorm orm,正确集成都至关重要。本文将探讨 typeorm 的使用最佳实践,并通过解决常见的运行时错误来提供一个问题的答案。

问题描述

一位 nest 新手在运行时遇到了一个错误,指出以下代码中的 bookentityrepository 未在 appmodule 上下文中可用:

@Module({     imports: [         TypeOrmModule.forRoot({ ... }),         BookModule,     ],     controllers: [BookController],     providers: [BookService], })

答案

根据给出的错误,该解决方法是删除 appmodule 中的 controllers(bookcontroller)和 providers(bookservice)数组。这样可以确保模块按预期解析 bookentityrepository 的依赖项。

最佳实践

除了解决上述问题外,在 nest 中使用 typeorm 时还应注意以下最佳实践:

  • 将 typeormmodule.forroot() 仅置于根模块(appmodule)中。
  • 在特性模块中使用 typeormmodule.forfeature() 导入实体。
  • 依赖注入实体存储库,使用 @injectrepository 装饰器(如 bookservice.ts 中所示)。
  • 避免在服务中直接操作 entitymanager 或 repository,因为它会破坏依赖注入。

通过遵循这些最佳实践,你可以确保 typeorm 在 nest 应用程序中得到正确且有效的使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享