找不到 Role#users 的实体元数据 [英] Entity metadata for Role#users was not found
本文介绍了找不到 Role#users 的实体元数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
试图使 OneToMany
和 ManyToOne
与 TypeORM 建立关系,但出现此错误,我不知道我的代码有什么问题.
Trying to make OneToMany
and ManyToOne
relationship with TypeORM but I get this error, I don't know what's wrong with my code.
我有以下用户实体:
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[];
}
但是我一直收到这个错误
However I keep getting this error
(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.
推荐答案
我正在将 NestJS 与 PostgreSQL 一起使用,并且我有同样的问题.我的问题是我忘记使用 TypeOrmModule.forFeature
函数在模块中导入实体.
I am using NestJS with PostgreSQL and I had the same issue. The problem was by me is that I forgot to import the entity in the module with the TypeOrmModule.forFeature
function.
@Module({
imports: [TypeOrmModule.forFeature([Users, ...])], <--- Importing the entity!
controllers: [...],
providers: [...],
exports: [...],
})
这篇关于找不到 Role#users 的实体元数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文