схема graphQL для типов, допускающих пользовательские атрибуты - PullRequest
0 голосов
/ 22 октября 2018

Я только недавно начал изучать graphQL, и я очень рад этому, но мне интересно, как это может работать, когда схема может меняться в зависимости от действий пользователя.Типы в нашем приложении могут иметь определенные пользователем атрибуты, и я прочитал, что динамические схемы могут быть сложными в graphQL.Есть ли решение для этого типа схемы в graphQl / Apollo.

1 Ответ

0 голосов
/ 23 октября 2018

GraphQL хорошо работает для API, где «форма» данных довольно четко определена.Например, в GitHub GraphQL API репозитории имеют ссылки (теги или ветви), имеют GitObjects (коммиты или теги), которые имеют довольно фиксированный набор атрибутов.Вы не создали бы отдельное поле GraphQL для каждой ветви;вместо этого вы можете искать

query WhereIsMaster($name: String!, $owner: String!) {
  repository(name: $name, owner: $owner) {
    refs(refPrefix: "refs/heads/master") {
      nodes {
        target {
          oid
        }
      }
    }
  }
}

Если вы разрабатываете свою собственную схему и у вас есть хранилище типа ключ / значение, вам придется написать свой собственный поиск для нее

type KeyValuePair implements Node {
  id: ID!
  key: String!
  value: String!
}
type Query {
  lookup(key: String!): KeyValuePair
}
type Mutation {
  insert(key: String!, value: String!): KeyValuePair!
}

Если ваша модель данных действительно свободна (например, MongoDB позволяет хранить произвольные документы JSON), то GraphQL не очень подходит для нее.

...