我正在创建Nest.js
应用程序,因此决定使用GrapQL创建我的项目。我阅读了一些文档,然后决定先编写代码方法(GraphQL模式应自动呈现自身)。对于这种方法,需要安装确实很酷的 type-graphql ,但是在我创建了一些仅包含主要类型的简单示例之后,我决定进行更多的挑战。
在我的应用程序中,我有BlogEntity
(从那些实体 type-graphql正在生成GraphQL模式)中使用ArticleEntity
,因为需要向{{ 1}},posts
和projects
。我创建了解析器,并为tutorials
,@ResolveProperty
和posts
定义了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操作
答案 0 :(得分:1)
所以问题不在@ResolverProperty
和我的解析器中。此错误的问题在于定义BlogEntity字段:posts
,projects
和tutorials
。你可以问为什么?因此,对于不是主要类型的每种类型(期望数字,您还必须定义它将是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[];
}