nestjs - 如何在 Nestjs 中的 typeorm 中正确配置 ormconfig.json 文件上的实体?
问题描述
我正在尝试将 TypeORM 与 Nestjs 一起使用,但在配置实体的路由时遇到了麻烦。
这是我的项目结构:
根文件夹 > src > 模块 > 课程 > 实体 > course.entity.ts
我的 ormconfig.json 看起来像这样:
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "",
"database": "test",
"entities": ["src/modules/**/entities/*.entity{.ts,.js}"],
"synchronize": true
}
我的 app.module.ts 看起来像这样:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from "@nestjs/typeorm";
import { CoursesModule } from './modules/courses/courses.module';
import { SchoolsModule } from './modules/schools/schools.module';
@Module({
imports: [
TypeOrmModule.forRoot(),
CoursesModule,
SchoolsModule
],
controllers: [],
providers: [],
})
export class AppModule { }
但是当我使用命令npm run start:dev运行项目时出现此错误:
EntityMetadataNotFound: No metadata for "Course" was found.
at new EntityMetadataNotFoundError (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\typeorm\error\EntityMetadataNotFoundError.js:10:28)
at Connection.getMetadata (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\typeorm\connection\Connection.js:336:19)
at EntityManager.getCustomRepository (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\typeorm\entity-manager\EntityManager.js:702:84)
at Connection.getCustomRepository (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\typeorm\connection\Connection.js:365:29)
at InstanceWrapper.useFactory [as metatype] (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\@nestjs\typeorm\dist\typeorm.providers.js:11:35)
at Injector.instantiateClass (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\@nestjs\core\injector\injector.js:292:55)
at callback (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\@nestjs\core\injector\injector.js:76:41)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Injector.resolveConstructorParams (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\@nestjs\core\injector\injector.js:117:24)
at async Injector.loadInstance (C:\Users\x_jem\Documents\Projects\www\titanx-e-learning-api\node_modules\@nestjs\core\injector\injector.js:80:9)
我试图在 app.module.ts 文件的 forRoot 方法上传递实体,如下所示:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from "@nestjs/typeorm";
import { CoursesModule } from './modules/courses/courses.module';
import { Course } from './modules/courses/entities/course.entity';
@Module({
imports: [
TypeOrmModule.forRoot({
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "",
"database": "test",
"entities": [Course],
"synchronize": true
}),
CoursesModule
],
controllers: [],
providers: [],
})
export class AppModule { }
一切正常,但我知道这不是我必须在生产服务器上执行此操作的方式。所以任何人都可以帮助我找到发生了什么以及如何解决它?
解决方案
推荐阅读
- daml - 如何在 Navigator 中显示自定义模板列表?
- c++ - 访问特定数组位置/索引时出现分段错误
- reactjs - 如何在 ABP 模板中启动 ReactJS 项目?
- excel - 通过 VBA 关闭该工作簿后,另一个工作簿的 VBAProject 保持打开状态
- python - Django Windows IIS Fastcgi Deploy 问题(wfastcgi TypeError: 'module' object is not callable)
- c# - 网络设备识别 C#
- curl - libcurl 中不支持或禁用协议“https”-Ubuntu 16.04
- javascript - Google Script,如何在我的正则表达式搜索字数限制中包含带撇号的字词?
- nestjs - 在 NestJS 中创建动态模块时使用 `forRoot` 或 `register` 有什么区别吗?
- python - 有没有办法加快pywinauto?