【发布时间】:2019-11-03 16:37:30
【问题描述】:
试图与 TypeORM 建立 OneToMany 和 ManyToOne 关系但我收到此错误,我不知道我的代码有什么问题。
我有以下用户实体:
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[];
}
但我不断收到此错误
(node:4541) UnhandledPromiseRejectionWarning: Error: Entity metadata
for Role#users was not found. Check if you specified a correct entity
object and if it's connected in the connection options. [1] at
/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:571:23
[1] at Array.forEach (<anonymous>) [1] at
EntityMetadataBuilder.computeInverseProperties
(/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:567:34)
[1] at
/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:80:74
[1] at Array.forEach (<anonymous>) [1] at
EntityMetadataBuilder.build
(/node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:80:25)
[1] at ConnectionMetadataBuilder.buildEntityMetadatas
(/node_modules/typeorm/connection/ConnectionMetadataBuilder.js:57:141)
[1] at Connection.buildMetadatas
(/node_modules/typeorm/connection/Connection.js:494:57)
[1] at Connection.<anonymous>
(/node_modules/typeorm/connection/Connection.js:126:30)
[1] at step
(/node_modules/tslib/tslib.js:136:27) [1]
(node:4541) UnhandledPromiseRejectionWarning: Unhandled promise
rejection. This error originated either by throwing inside of an async
function without a catch block, or by rejecting a promise which was
not handled with .catch(). (rejection id: 1) [1] (node:4541) [DEP0018]
DeprecationWarning: Unhandled promise rejections are deprecated. In
the future, promise rejections that are not handled will terminate the
Node.js process with a non-zero exit code.
【问题讨论】:
-
当您忘记在其中一个实体上添加
@Entity注释时,“未找到实体元数据”也会显示。实体还必须在连接设置的“实体”部分中声明(参见@Martin Konicek 的回答)。
标签: typeorm typegraphql