Как написать запрос в GraphQL с пользовательскими объектами - PullRequest
0 голосов
/ 18 января 2019

На стороне сервера graphql используется nodejs и express. Это схема для graphql. У него есть один запрос, который принимает объект DateT с датами и датами.

var schema = buildSchema(`
    type Query {
        courseWithDate(
            timeFilter: DateT
        ): Course

    },
    type Course {
        ...
        from: String
        to: String
    },
    type DateT{
        from : String
        to : String
    }
`);

и вот как я получаю курсы

Я могу запустить приложение с этим URL

localhost:4000/graphql

Это запрос, который я использую

query courseWithDate($from: dateFrom, $to: dateTo) {
    courseWithDate(timeFilter: {
      from: "${dateFrom}"
      to: "${dateTo}"
    })  {
        title
        ...
    }
}

с этими параметрами

{ 
   "from": "2019-10-10","to":"2019-10-10"
}

Полученное сообщение об исключении связано с типом ввода, который я пытаюсь передать.

{
  "errors": [
    {
      "message": "The type of Query.courseWithDate(timeFilter:) must be Input Type but got: DateT.",
      "locations": [
        {
          "line": 6,
          "column": 25
        }
      ]
    }
  ]
}

1 Ответ

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

Я не уверен, но, вероятно, этот стиль больше похож на лучшую практику

type Course {
  id: Int
  title: String
  author: String
  from: String
  to: String
  description: String
  topic: String
  url: String
}

input DateInput {
  dateFrom: String!
  dateTo: String!
}

type Query {
  courseWithDate(input: DateInput!, name: String!): Course
}

И запрос на стороне клиента должен быть:

  {
    courseWithDate(input: {
      dateFrom: "${dateFrom}"
      dateTo: "${dateTo}"
    }
    name: "${name}") 
    {
      id
      name
    }
  }
...