NestJS中InputType和ObjectType有什么区别

问题描述 投票:0回答:2

ObjectType
在文档中明确定义:https://docs.nestjs.com/graphql/resolvers#object-types.

但是,

InputType
在此页面上多次使用而未定义:https://docs.nestjs.com/graphql/mapped-types

两者有什么区别?

graphql nestjs
2个回答
0
投票

正如官方 Nest.js 文档中的注释所述,您可以找到有关 InputType 装饰器的信息。 https://docs.nestjs.com/graphql/mutations


0
投票

我认为文档中没有那么清楚

在NestJS中,处理GraphQL时,主要使用三种类型来定义数据的形状:

InputType
ObjectType
ArgsType
。这些类型有助于构建 GraphQL 模式并有效管理数据的输入和输出。让我们逐一分解:

输入类型

  • 用法:用于定义 GraphQL 突变和查询的输入类型。
  • 目的:帮助指定将作为参数传递给突变或查询的数据的形状。
  • 示例
import { InputType, Field } from '@nestjs/graphql';

@InputType()
export class CreateUserInput {
  @Field()
  firstName: string;

  @Field()
  lastName: string;

  @Field()
  email: string;
}

何时使用:当您需要接受复杂对象作为 GraphQL 查询或突变中的输入参数时,请使用

InputType

对象类型

  • 用法:用于定义 GraphQL 查询和突变的输出类型。
  • 用途:表示 GraphQL 服务器将返回的数据的形状。
  • 示例
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;
}

  • 何时使用:当您需要定义 GraphQL 服务器将返回的数据结构时,请使用
    ObjectType

参数类型

  • 用法:用于定义 GraphQL 查询和突变的参数类型。
  • 用途:帮助指定作为参数传递的数据的形状,类似于
    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
    :为查询和突变定义简单的输入参数。
© www.soinside.com 2019 - 2024. All rights reserved.