Сделать запросы на список объектов в ответе Graphql

Допустим, у меня есть следующая схема запроса:

schema {
    query: Query
}

type Query {
    money(id: Long!): Money
    coin(id: Long!): Coin 
}

type Money {
  id: Long!
  coins: [Coin!]!
}

type Coin {
  id: Long!
  name: String!
  history: [DateVal!]
}

type DateVal {
   date: String!
   val: Long!
}

У меня две конечные точки: /money и /coin, каждая из которых принимает идентификатор. Когда я делаю запрос к /money, я получаю ответ, как показано ниже:

{
  "id": 5,
  "coins": [
    { "id" : 1, "name" : "N1", "history": null},
    { "id" : 2, "name" : "N2", "history": null},
  ]  
}

Если я вызываю конечную точку coin с идентификатором монеты, я получаю полную историю монеты.

Есть ли способ заставить GraphQL принять такой ответ и рекурсивно вызвать конечную точку /coin, используя идентификатор каждой монеты, чтобы заполнить историю? Я попробовал выполнить следующий запрос, но он не вызвал рекурсивно конечную точку coin.

{
  money(id: 1) {
    id
    coins {
      id
      name
      history {
        date
        val
      }
    }
  }
}

Можете ли вы добавить свои функции распознавателя?

Alessander França 22.03.2018 17:40

@ AlessanderFrança Я обнаружил, что моя проблема заключалась в том, что я не подключил преобразователь для поля history для coin. Я предположил (ошибочно), что graphQL автоматически вызовет coin для ответа монеты.

user2548635 23.03.2018 01:32

Хороший! эта ошибка часто встречается в graphql.

Alessander França 23.03.2018 11:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
3
78
0

Другие вопросы по теме