GraphQL без типа объекта? - PullRequest
0 голосов
/ 17 декабря 2018

Я прочитал все, не понял решения и конкретного объяснения (даже здесь: Apollo / GraphQl - тип должен быть тип ввода )

Я хочу создать объект Система, которая содержитСолнца.Поэтому я делаю:

  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 :) должен бытьТип ввода, но получил: [Солнце]. "

Я понимаю, что Солнце не принимается как объект.Как объявить его объектом?

Большое спасибо за ответы

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вам нужно сделать собственный «Тип» для солнца с собственным распознавателем.

suns: { type: new GraphQLList(SunType) } // just an example

mutation {
  createSystem(name:"new system", suns-names: "John") {
    name
  }
}

У него будет распознаватель, который записывает новую систему в базу данных, называемую новой системой, которая добавляет в коллекцию базы данных sun "SunType" с именем "Sun", например.

0 голосов
/ 17 декабря 2018

GraphQL спец.не позволяет использовать type (т.е. тип вывода) в качестве входного аргумента. Он позволяет только входным аргументам быть enum, Scalar и Input.Это означает, что вы должны создать SunInput

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