Схема GQL для принятия нескольких структур данных для одного и того же ключа - PullRequest
0 голосов
/ 03 февраля 2020

В настоящее время я использую GQL Modules в своем приложении.

В приведенной ниже структуре данных content будет иметь либо object, либо array

var A = {
  content: {
    text: "Hello"
  }
}

var B = {
  content: {
    banner: [{
      text: "Hello"
    }]
  }
}

Как сделать content для принятия схемы Dynami c?

Ниже я устал, но не работаю. Пожалуйста, помогите

type body {
 content: TextContent | [Banner]
}

type Banner {
  text: TextContent
}

type TextContent {
 text: String
}

1 Ответ

0 голосов
/ 03 февраля 2020

GraphQL требует, чтобы поле всегда разрешалось либо в одно значение, либо в список - оно не может разрешаться ни в одно из них. Однако поле может возвращать разные типы во время выполнения, используя абстрактный тип (объединение или интерфейс). Таким образом, вы можете реструктурировать свою схему следующим образом:

type Body {
  content: Content
}

union Content = TextContent | BannerContent

type TextContent {
  text: String
}

type BannerContent {
  banners: [Banner]
}

Затем вы запросите content, используя фрагменты:

query {
  someField {
    body {
      content: {
        ...on TextContent {
          text
        }
        ...on BannerContent {
          banners
        }

      }
    }
  }
}
...