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