我想在用户和TypeGraphQL中的文档之间创建一个简单的关系。因此,用户可以创建无限的文档,而一个文档只有一个创建者。但是我收到一个错误。
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, OneToMany } from "typeorm";
import { Field, ID, ObjectType } from "type-graphql";
import { Doc } from "./Doc";
@ObjectType()
@Entity()
export class User extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn()
id: number;
@Field()
@Column()
firstName: string;
@Field()
@Column()
lastName: string;
@Field()
@Column()
nickname: string;
@Field()
@Column("text", { unique: true })
email: string;
@Column()
password: string;
@Field({ nullable: true })
@Column()
created: Date;
@Field()
@Column()
gender: string;
@OneToMany(() => Doc, doc => doc.creator)
createdDocs: Promise<Doc[]>;
}
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, ManyToOne } from "typeorm";
import { Field, ID, ObjectType } from "type-graphql";
import { User } from "./User";
@ObjectType()
@Entity()
export class Doc extends BaseEntity {
@Field(() => ID)
@PrimaryGeneratedColumn()
id: number;
@Field({ nullable: true })
@Column()
created: Date;
@Field()
@Column()
@ManyToOne(() => User, user => user.createdDocs)
creator: Promise<User>;
}
throw new errors_1.NoExplicitTypeError(prototype.constructor.name, propertyKey, parameterIndex);
^
Error: You need to provide explicit type for Doc#creator !
但是导致这种情况发生的原因是什么?当然,表doc中的列创建者不是真正的“数据类型”,因为它不应该是“静态”的。它必须是一个关系,并且该关系显然不能具有“数据类型”。
答案 0 :(得分:1)
无需声明与@Field()
或@Column()
的关系
答案 1 :(得分:1)
错误:您需要为Doc#creator提供显式类型!
这意味着,当您的媒体资源类型为Promise<User>
时,反射类型为Object
。在这种情况下,TypeGraphQL需要装饰器中的显式类型,例如@Field(type => User)
。