Отношения не работают должным образом в TypeGraphQL (Вы должны предоставить явный тип для ...) - PullRequest
3 голосов
/ 05 ноября 2019

Я хочу создать простую связь между пользователем и документами в 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 !

Но что является причиной этого? Конечно, создатель столбца в табличном документе не является реальным «типом данных», потому что он не должен быть «статичным». Это должно быть отношение, и это отношение не может иметь «тип данных».

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Ошибка: вам нужно предоставить явный тип для Doc # creator!

Это означает, что, когда ваш тип свойства равен Promise<User>, отраженный тип равен Object. TypeGraphQL в этом случае требует явного типа в декораторе, например @Field(type => User).

1 голос
/ 05 ноября 2019

Я нашел свою ошибку ...

Нет необходимости объявлять отношения с @Field() или @Column()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...