【问题标题】:How to input an array into a GraphQL Mutation如何将数组输入到 GraphQL Mutation
【发布时间】:2019-06-11 04:27:08
【问题描述】:

我正在尝试向我的 Mutation 添加一个字段,其中包含我自己类型的数组。当我添加createTour 突变的吸引力时,我开始收到此错误:

错误:Mutation.createTour(attractions:) 的类型必须是 Input Type 但得到:[Attraction]。

这是有问题的突变

type Mutation {
    createTour(
    title: String!
    description: String!
    attractions: [Attraction]      <----- THIS LINE
    ): Tour
    addCommentToTour(id: ID!, comment: String!): Tour
}

这也是我拥有的 typedef。

type Attraction {
    title: String
    description: String
    coordinateLat: Int
    coordinateLong: Int
}

type Tour {
    id: ID!
    title: String!
    description: String!
    author: String!
    attractions: [Attraction]      
}

我怎样才能让这个 Mutation 进入这个数组?

【问题讨论】:

  • 如错误所示,只有输入类型可用于参数,不能用于对象类型。这个问题出现了很多。请参阅hereherehere
  • @DanielRearden aaaahhhhhhh,非常感谢您为我指明了正确的方向。我确实看到了其中一个答案,只是将type 更改为input;我没有意识到我需要创建一个完全不同的input;谢谢!
  • 很高兴能帮上忙!随意删除这个问题。

标签: graphql apollo apollo-server


【解决方案1】:

DanielRearden 的评论中或多或少已经回答了。

突变的所有输入属性必须在您的架构中定义为input。您不能使用与输出相同的类型。

在您的情况下,您必须创建一个额外的:

input AttractionInput {
  title: String
  description: String
  coordinateLat: Int
  coordinateLong: Int
}

基本思想是,您的输入可能与输出不同。有点多余的代码,但分隔更清晰。

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 2018-10-20
    • 2021-09-20
    • 2019-09-23
    • 2022-01-05
    • 2020-12-23
    • 2021-03-30
    • 2018-12-08
    • 2016-05-06
    相关资源
    最近更新 更多