首页 > 解决方案 > GraphQL 没有对象类型?

问题描述

我已经阅读了所有内容,没有理解任何解决方案和具体解释(即使在这里:Apollo / GraphQl - Type must be Input type

我想创建一个包含太阳的对象系统。所以我这样做:

  type System {
   _id: ID
   name: String! @unique
   diameter: Int
   suns: [Sun]
  }

  type Sun {
   _id: ID
   name: String
   diameter: Int
  }

  type Mutation {
   createSystem(name: String!, diameter: Int, suns: [Sun]): System!
  }

我在操场上写道:

mutation {
  createSystem(name:"new system", suns: [{ name: "John" }]) {
    name
    suns
  }
}

但是我收到了一个终端错误:“错误:Mutation.createSystem(suns:) 的类型必须是输入类型,但得到了:[Sun]。”

我知道 Sun 不是作为对象接收的。如何将其声明为对象?

非常感谢您的回答

标签: graphqlapolloapollo-server

解决方案


GraphQL 规范。不允许使用type(即输出类型)作为输入参数。它只允许输入参数为enum,ScalarInput. 这意味着您必须创建一个SunInput

input SunInput {
   _id: ID
   name: String
   diameter: Int
}

推荐阅读