Метаданные сущности для пользователей с ролью # не найдены - PullRequest
0 голосов
/ 20 июня 2019

Попытка установить отношения OneToMany и ManyToOne с typeorm, но я получаю эту ошибку, я не знаю, что не так с моим кодом.

У меня есть таблица пользователя:

import { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { Field, ID, ObjectType } from 'type-graphql';

import { Role } from './';

@ObjectType()
@Entity()
export class User extends BaseEntity {
    @Field(() => ID)
    @PrimaryGeneratedColumn()
    public id: number;

    @Field()
    @Column('text', { unique: true })
    public userName: string;

    @Column()
    public password: string;

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

    @ManyToOne(() => Role, role => role.users)
    @Field(() => Role, { nullable: true })
    public role: Role;
}

и таблица ролей:

import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Field, ID, ObjectType } from 'type-graphql';

import { User } from '.';

@ObjectType()
@Entity()
export class Role extends BaseEntity {
    @Field(() => ID)
    @PrimaryGeneratedColumn()
    public id: number;

    @Field()
    @Column('text', { unique: true })
    public name: string;

    @OneToMany(() => User, user => user.role, { lazy: false })
    @Field(() => [User], { nullable: true })
    public users: User[];
}

Однако я продолжаю получать эту ошибку

(узел: 4541) UnhandledPromiseRejectionWarning: Ошибка: метаданные объекта для пользователей роли # не найдены.Проверьте, правильно ли вы указали объект сущности и подключен ли он в параметрах соединения.[1] в /Users/soufiane/projects/pos/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:571:23 [1] в Array.forEach () [1] в EntityMetadataBuilder.computeInverseProperties (/ Usersprojects / pos / node_modules / typeorm / metadata-builder / EntityMetadataBuilder.js: 567: 34) [1] в /Users/soufiane/projects/pos/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:80:74 [1] в Array.forEach () [1] в EntityMetadataBuilder.build (/Users/soufiane/projects/pos/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:80:25) [1] в ConnectionMetadataEatasMitasBuilder./soufiane/projects/pos/node_modules/typeorm/connection/ConnectionMetadataBuilder.js:57:141) [1] в Connection.buildMetadatas (/Users/soufiane/projects/pos/node_modules/typeorm/connection/Connections):57) [1] при подключении.(/Users/soufiane/projects/pos/node_modules/typeorm/connection/Connection.js:126:30) [1] на шаге (/Users/soufiane/projects/pos/node_modules/tslib/tslib.js:136:27) [1] (узел: 4541) UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(идентификатор отклонения: 1) [1] (узел: 4541) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело.В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.

1 Ответ

0 голосов
/ 12 июля 2019

Это просто означает, что ваши объекты либо не загружаются, либо загружаются неправильно

Вам нужно исправить загрузку ваших сущностей. Объекты обычно загружаются из файла ormconfig

Просто создайте файл ormconfig.js и введите что-то вроде этого, выделение сущностей

module.exports = {
  "name": "default",
  "type": "mongodb",
  "host": "localhost",
  "port": "27017",
  "username": "root",
  "password": "",
  "database": "rocketlaunches",
  "entities": [
    __dirname + "entities/**/*.entity.ts"
  ]
}

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

...