ObjectType
在文档中明确定义:https://docs.nestjs.com/graphql/resolvers#object-types.
但是,
InputType
在此页面上多次使用而未定义:https://docs.nestjs.com/graphql/mapped-types。
两者有什么区别?
正如官方 Nest.js 文档中的注释所述,您可以找到有关 InputType 装饰器的信息。 https://docs.nestjs.com/graphql/mutations。
我认为文档中没有那么清楚
在NestJS中,处理GraphQL时,主要使用三种类型来定义数据的形状:
InputType
、ObjectType
和ArgsType
。这些类型有助于构建 GraphQL 模式并有效管理数据的输入和输出。让我们逐一分解:
import { InputType, Field } from '@nestjs/graphql';
@InputType()
export class CreateUserInput {
@Field()
firstName: string;
@Field()
lastName: string;
@Field()
email: string;
}
• 何时使用:当您需要接受复杂对象作为 GraphQL 查询或突变中的输入参数时,请使用
InputType
。
import { ObjectType, Field, Int } from '@nestjs/graphql';
@ObjectType()
export class User {
@Field(type => Int)
id: number;
@Field()
firstName: string;
@Field()
lastName: string;
@Field()
email: string;
}
ObjectType
。InputType
,但通常用于更简单或更直接的参数定义。import { ArgsType, Field } from '@nestjs/graphql';
@ArgsType()
export class GetUserArgs {
@Field()
id: string;
}
• 何时使用:当您具有简单、直接的参数结构时,请使用
ArgsType
,通常用于单个参数或几个简单参数。
InputType
和 ArgsType
用于定义查询和突变的输入参数。ObjectType
用于定义 GraphQL 服务器返回的数据的形状。InputType
用于复杂的输入结构,通常用于突变。ArgsType
用于更简单的输入结构,通常在查询中使用。InputType
适用于输入是嵌套或详细结构的情况。ArgsType
通常用于简单的参数定义,而不需要InputType
的复杂性。ObjectType
专门用于定义输出数据的结构。InputType
:定义突变和查询的复杂输入形状。ObjectType
:定义服务器返回的输出数据的结构。ArgsType
:为查询和突变定义简单的输入参数。