Как добавить скалярный тип JSON в сервер йоги graphQL? - PullRequest
0 голосов
/ 19 января 2019

У меня есть API отдыха, который возвращает объект со списком идентификаторов со счетчиками на каждом из них.

{
    "orders": {
      "PMY5XbR7FZo5qEkEb": 0
    }
}

Я понятия не имею, какие ключи объекта заказов будут опережать время, и при этом я не знаю, сколько ключей будет.

Ответ на этот вопрос предлагает использовать тип JSON, который рискован, но выполним.

Проблема в том, что это не работает с сервером йоги graphQL:

type Task {
  orders:  JSON
}

Как ссылаться на типы JSON на сервере йоги?

1 Ответ

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

Вам необходимо явно объявить скалярные типы , прежде чем вы сможете их использовать.Чтобы эта схема работала, вам нужно добавить дополнительную декларацию:

scalar JSON
type Task {
  orders:  JSON
}

GraphQL ничего не знает о содержимом скалярных значений, что означает, что это отодвигает дополнительную обработку клиента напроверить и десериализовать JSON), и это на самом деле не описывает вашу объектную модель.

Вы могли бы рассмотреть возможность перестройки внутреннего отклика для получения более структурированной объектной модели.Как потребитель API, мне было бы проще понять и использовать

type Order {
  id: ID!
  count: Int!
}
type Task {
  orders: [Order!]!
}

, но вы не можете напрямую передать бэкэнд-результат REST API в эту форму, не переставив ее.

...