В схемах 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?