无法使用typeorm在nestjs中创建新实体 - EntityMetadataNotFoundError

问题描述 投票:0回答:1

您好,我在使用 typeorm 时遇到了一些问题,我正在尝试向当前项目添加一个新实体,我执行以下操作:

我创建了一个新实体

import { Entity, Column, PrimaryGeneratedColumn, JoinColumn, OneToOne } from 'typeorm';

@Entity()
export class Requirement {
    @PrimaryGeneratedColumn("uuid")
    id: string;

    @Column()
    seats: number;

    @Column()
    points: number;
}

并将其添加到我的模块中

    TypeOrmModule.forFeature([Requirement, ....)]

并且该表已在数据库中正确创建。

我创建了一个测试函数来调用:

  async test(){
    const req = new Requirement();
    req.seats = 6; 
    req.points = 40;
    return this.requirementRepository.save(req);
  }

这就是我创建存储库的方式:

    @InjectRepository(Requirement)
    private readonly requirementRepository: Repository<Requirement>,

我收到此错误

EntityMetadataNotFoundError: No metadata for "Requirement" was found.
    at DataSource.getMetadata (/home/m/work/c/Website-Backend/src/data-source/DataSource.ts:427:30)
    at Repository.get metadata [as metadata] (/home/m/work/c/Website-Backend/src/repository/Repository.ts:52:40)
    at Repository.save (/home/m/work/c/Website-Backend/src/repository/Repository.ts:205:18)
    at ProgramsService.test (/home/m/work/c/Website-Backend/libs/programs/src/programs.service.ts:38:39)

即使表已正确创建。 只是为了澄清我创建的新实体与我已经正确工作的其他一些实体位于同一目录中,我将分享我的 typeormconf:

...
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: process.env.POSTGRES_HOST,
      port: 5433,
      username: process.env.POSTGRES_USER,
      password: process.env.POSTGRES_PASSWORD,
      database: process.env.POSTGRES_DB,
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      autoLoadEntities: true,
      logging: true,
    }),

我被困住了,我已经尝试了一切可能的方法,但我无法让它工作,提前谢谢你。

应该按照文档进行全部设置,但仍然有问题。

typescript orm nestjs typeorm
1个回答
0
投票

我想这与尝试在模块中使用存储库有关,而不是导入 typeorm.forFeature 并声明实体的存储库。如果您有兴趣,我使用 typeorm 0.3 和 Nestjs 10 创建了一个小示例:https://github.com/lhouusaine/nestjs-10_typeorm-03

© www.soinside.com 2019 - 2024. All rights reserved.