【问题标题】:Relations don't work properly in TypeGraphQL (You need to provide explicit type for...)关系在 TypeGraphQL 中无法正常工作(您需要为...提供显式类型)
【发布时间】:2020-03-01 23:02:38
【问题描述】:

我想在 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 !

但是导致这种情况发生的原因是什么?当然,表文档中的列创建者不是真正的“数据类型”,因为它不应该是“静态的”。它必须是一个关系,而这个关系显然不能有“数据类型”。

【问题讨论】:

    标签: javascript graphql typeorm typegraphql


    【解决方案1】:

    我发现我的错误...

    不需要声明与@Field()@Column()的关系

    【讨论】:

    • 对我来说,需要声明与@Field()的关系
    【解决方案2】:

    错误:您需要为 Doc#creator 提供显式类型!

    这意味着,当您的属性类型为Promise&lt;User&gt; 时,反射类型为Object。在这种情况下,TypeGraphQL 需要在装饰器中显式类型,例如 @Field(type =&gt; User)

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 2013-11-20
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多