Как динамически генерировать GraphQL мутации и запросы - PullRequest
0 голосов
/ 25 февраля 2020

Так что я знаю, что мы должны отдавать предпочтение stati c запросам и мутациям по соображениям скорости, но если бы я хотел сделать что-то, что могло бы динамически построить операцию GraphQL, как бы я это сделал?

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

import gql from 'graphql-tag'

const GET_SCHEMA = gql`
  fragment FullType on __Type {
    kind
    name
    description
    fields(includeDeprecated: true) {
      name
      description
      args {
        ...InputValue
      }
      type {
        ...TypeRef
      }
      isDeprecated
      deprecationReason
    }
    inputFields {
      ...InputValue
    }
    interfaces {
      ...TypeRef
    }
    enumValues(includeDeprecated: true) {
      name
      description
      isDeprecated
      deprecationReason
    }
    possibleTypes {
      ...TypeRef
    }
  }
  fragment InputValue on __InputValue {
    name
    description
    type {
      ...TypeRef
    }
    defaultValue
  }
  fragment TypeRef on __Type {
    kind
    name
    ofType {
      kind
      name
      ofType {
        kind
        name
        ofType {
          kind
          name
          ofType {
            kind
            name
            ofType {
              kind
              name
              ofType {
                kind
                name
                ofType {
                  kind
                  name
                }
              }
            }
          }
        }
      }
    }
  }

  query {
    __schema {
      queryType {
        name
      }
      mutationType {
        name
      }
      types {
        ...FullType
      }
      directives {
        name
        description
        locations
        args {
          ...InputValue
        }
      }
    }
  }
`

export default GET_SCHEMA

И на основании этого я могу отправить свои данные формы, чтобы я знал, что у меня есть следующая информация:

  • Независимо от того, выполняю ли я мутацию или запрос
  • Переменные и их значения

Так что отсюда я мог бы выполнить стандартную операцию, такую ​​как:

  const REQUEST_PASSWORD_REQUEST = gql`
    mutation requestPasswordReset($email: String!) {
      requestPasswordReset(email: $email) {
        message
      }
    }

Но я на самом деле не знаю, что такое типы переменных по умолчанию, так как лучше всего собрать их вместе, чтобы я мог автоматически создавать мутации и запросы?

Спасибо!

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