为什么会出现NoExplicitTypeError?

时间:2019-11-13 22:23:00

标签: typescript graphql nestjs type-graphql

我正在创建Nest.js应用程序,因此决定使用GrapQL创建我的项目。我阅读了一些文档,然后决定先编写代码方法(GraphQL模式应自动呈现自身)。对于这种方法,需要安装确实很酷的 type-graphql ,但是在我创建了一些仅包含主要类型的简单示例之后,我决定进行更多的挑战。

在我的应用程序中,我有BlogEntity(从那些实体 type-graphql正在生成GraphQL模式)中使用ArticleEntity,因为需要向{{ 1}},postsprojects。我创建了解析器,并为tutorials@ResolvePropertyposts定义了projects。当我尝试运行tutorials命令时,出现此错误:

  

抛出新错误_1.NoExplicitTypeError(prototype.constructor.name,propertyKey,parameterIndex);

     
    

NoExplicitTypeError:您需要为BlogEntity#posts提供显式类型!

  

有人可以向我解释为什么我会收到此错误以及如何解决该错误吗?

BlogEntity

nest start

BlogResolver

import { Entity, Column, ObjectIdColumn } from 'typeorm';
import { Field, ID, ObjectType } from 'type-graphql';
import { ArticleEntity } from '../../articles/models/article.entity';

@Entity()
@ObjectType()
export class BlogEntity {
  @Field(() => ID)
  @ObjectIdColumn()
  _id: string;

  @Field()
  @Column()
  posts: ArticleEntity[];

  @Field()
  @Column()
  projects: ArticleEntity[];

  @Field()
  @Column()
  tutorials: ArticleEntity[];
}

如果您还需要在评论部分对我进行ping操作

1 个答案:

答案 0 :(得分:1)

所以问题不在@ResolverProperty和我的解析器中。此错误的问题在于定义BlogEntity字段:postsprojectstutorials。你可以问为什么?因此,对于不是主要类型的每种类型(期望数字,您还必须定义它将是Float还是Integer),对于每个是 array 甚至是主要类型数组(例如字符串)的字段,还必须定义一种returnig值。如何做到这一点,您只需将returnTpyFunction添加到@Field()装饰器中即可。

示例

@Entity()
@ObjectType()
export class BlogEntity {
  @Field(() => ID)
  @ObjectIdColumn()
  _id: string;

  @Field(() => [ArticleEntity])
  @Column()
  posts: ArticleEntity[];

  @Field(() => [ArticleEntity])
  @Column()
  projects: ArticleEntity[];

  @Field(() => [ArticleEntity])
  @Column()
  tutorials: ArticleEntity[];
}