在 .graphql 文件中定义 GraphQL 对象类型不起作用

Posted

技术标签:

【中文标题】在 .graphql 文件中定义 GraphQL 对象类型不起作用【英文标题】:Define GraphQL object type in .graphql files not working 【发布时间】:2021-09-12 04:08:04 【问题描述】:

我正在尝试在 type-graphql 中进行突变,其中一个参数是 Object 所以:

@Mutation(() => Boolean)
async createProduct(
    @Arg('name', () => String) name: string,
    @Arg('price', () => Int) price: number,
    @Arg('images', () => [InputImages]) images: [ImagesArray],
) 
    // Code

所以我为参数“images”创建了一个输入类型:

@InputType()
class InputImages 
  @Field(() => String)
  filename: string;

还有一个对象类型:

@ObjectType()
export class ImagesArray 
    @Field(() => String)
    filename: string

现在我正在尝试使用 GraphQL 代码生成器,我需要在客户端编写查询和突变作为 .graphql 文件扩展名,所以我有:

mutation CreateProduct(
    $name: String!
    $price: Int!
    $images: [ImagesArray]!
) 
    createProduct(
        name: $name
        price: $price
        images: $images
    );

现在当我尝试运行 "npm run gen" 时说:

GraphQLDocumentError:未知类型“ImagesArray”。

我尝试在上面添加:

type ImagesArray 
    filename: String

不能再工作了,知道吗?

【问题讨论】:

【参考方案1】:
    你不需要ImagesArray 输入args:
@Arg('images', () => [InputImages]) images: InputImages[],
    更新您的突变类型名称:
mutation CreateProduct(
    $name: String!
    $price: Int!
    $images: [InputImages!]!
) 
  # ...

【讨论】:

以上是关于在 .graphql 文件中定义 GraphQL 对象类型不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 graphQL 片段中定义可选字段以进行查询

GraphQL 错误:输入类型中未定义字段

如何将自定义标量导入 NestJs 中的 .graphql 文件?

你可以在graphql服务器模式文件中使用片段吗

从 .gql 文件中命名导出多个 graphql 操作

Apollo Android (GraphQL) 自定义类型构建文件警告:“无法为最终字段赋值”