Когда я использую вложенные поля в GraphQL и когда я их выравниваю? - PullRequest
0 голосов
/ 21 апреля 2020

В схемах GraphQL, когда я должен предоставить поле отношения типа в качестве поля root -уровня для связанного с ним типа?

Пример

Во многих примерах я почти всегда вижу схемы которые требуют от клиента создания запросов, которые явно пересекают график, чтобы получить вложенное поле.

Для Rock Band Table -подобного компонента во внешнем интерфейсе (или клиенте) службы GraphQL который обеспечивает данные этого компонента, может иметь схему, которая выглядит следующим образом:

type Artist {
  name: String!
  instrument: String!
}

type RockBand {
  leadSinger: Artist,
  drummer: Artist,
  leadGuitar: Artist,
}

type Query {
  rockBand: RockBand
}

Если компонент таблицы указал столбец с именем " Имя ведущего певца ", учитывая текущую схему, возможный запрос для извлечения данных таблицы будет выглядеть следующим образом:

{
  rockBand {
    leadSinger {
      name
    }
  }
}

Для той же таблицы Rock Band , с тем же столбцом и потребностями, почему бы не разработать такую ​​схему:

type RockBand {
  leadSinger: Artist,
  leadSingerName: String,
  drummer: Artist,
  leadGuitar: Artist,
}

Таким образом возможный запрос может быть таким?

{
  rockBand {
    leadSingerName
  }
}

Зависит ли выбор включения «имени лидера певца» и аналогичных полей отношения полностью от сл нужно? Является ли изменение схемы для обслуживания данных для этого варианта использования слишком точной c схемой? Есть ли преимущества для выравнивания полей за счет облегчения для клиента? Есть ли преимущества в том, чтобы принудительно проходить через отношение, чтобы получить указанное поле c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...