EntityMetadataNotFound: метаданные для "Задачи" не найдены - NestJS - PullRequest
1 голос
/ 13 июля 2020

Я изучаю курс Nest JS от Udemy https://www.udemy.com/course/nestjs-zero-to-hero.

И у меня возникла странная проблема, и я пробовал много вещей, но, похоже, ничего не работает . Вот проблема и полный код, который у меня есть.

Ошибка, которую я получаю

Error that I am getting

My ORM configuration file:

ORM Configuration file

**Task Entity File: ** enter image description here

Finally I am importing the configuration file in tasks.module.ts file введите описание изображения здесь

Люди, столкнувшиеся с этой проблемой, решили ее с помощью различных исправлений,

  1. Некоторые сказали, что мы могли добавить неправильное имя файла или путь в конфигурацию, которые могли вызвать эту проблему.
  2. Некоторые говорили, что переход с npm на пряжу устранил проблему.
  3. И некоторые также сказали, что проблема связана с самим ORM.

У меня есть пробовал все возможные решения, доступные для inte rnet, но не смог это исправить. Прошло довольно много дней, и я ищу руку помощи или спасителя при переполнении стека.

Между тем, я постараюсь увидеть еще несколько возможностей, которые могут помочь, но если вы столкнулись с этой проблемой, позвольте мне знать возможные решения.

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Вы расширяете BaseEntity , это не означает, что аннотация @Entity будет помещена в ваш класс сущности. он в основном используется как, например, определенные поля данных, которые вы хотите, чтобы каждый из ваших объектов имел.

его внутренняя реализация выглядит примерно так: -

// base.entity.ts
import { PrimaryGeneratedColumn, Column, UpdateDateColumn, CreateDateColumn } from 'typeorm';

export abstract class BaseEntity {
@PrimaryGeneratedColumn('uuid')
id: string;

@Column({ type: 'boolean', default: true })
isActive: boolean;

@Column({ type: 'boolean', default: false })
isArchived: boolean;

@CreateDateColumn({ type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP' })
createDateTime: Date;

@Column({ type: 'varchar', length: 300 })
createdBy: string;

@UpdateDateColumn({ type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP' })
lastChangedDateTime: Date;

@Column({ type: 'varchar', length: 300 })
lastChangedBy: string;

@Column({ type: 'varchar', length: 300, nullable: true })
   internalComment: string | null;
}

, поэтому это сгенерирует идентификатор uuid -field и / или createDateTime-, lastChangedDateTime-fields.

Примечание: эти базовые классы должны быть абстрактными.

, поэтому вам нужно разместить аннотацию @Entity в начале каждый ваш класс Entity

также измените порядок импорта, например сначала импортируйте TypeOrmModule, а затем TaskModule.

Надеюсь, это поможет.

1 голос
/ 13 июля 2020

Вам не хватает декоратора @Entity() в вашем классе Task. Это устанавливает метаданные, которые TypeORM ищет в соответствии с его документами .

...