Так что я знаю, что мы должны отдавать предпочтение 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
}
}
Но я на самом деле не знаю, что такое типы переменных по умолчанию, так как лучше всего собрать их вместе, чтобы я мог автоматически создавать мутации и запросы?
Спасибо!