Graphql: схема не настроена для мутаций в Go
Я пытаюсь написать Graphql Mutation
внутри Go
. Я используюgithub.com/graphql-go/graphql
библиотека.
Вот код, который я написал для того же.
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"github.com/graphql-go/graphql"
)
type userMaster struct {
Name string `json:"userName"`
ID string `json:"emailID"`
}
var user userMaster
func main() {
fmt.Println("Hello world !!!")
userType := graphql.NewObject(
graphql.ObjectConfig{
Name: "userMaster",
Fields: graphql.Fields{
"userName": &graphql.Field{
Type: graphql.String,
},
"emailID": &graphql.Field{
Type: graphql.String,
},
},
},
)
rootMutation := graphql.NewObject(graphql.ObjectConfig{
Name: "Mutations",
Fields: graphql.Fields{
"createUser": &graphql.Field{
Type: userType,
Args: graphql.FieldConfigArgument{
"userName": &graphql.ArgumentConfig{
Type: graphql.NewNonNull(graphql.String),
},
"emailID": &graphql.ArgumentConfig{
Type: graphql.NewNonNull(graphql.String),
},
},
Resolve: func(params graphql.ResolveParams) (interface{}, error) {
user.Name = params.Args["userName"].(string)
user.ID = params.Args["emailID"].(string)
return user, nil
},
},
},
})
schema, _ := graphql.NewSchema(graphql.SchemaConfig{
Mutation: rootMutation,
})
http.HandleFunc("/graphql", func(w http.ResponseWriter, r *http.Request) {
result := graphql.Do(graphql.Params{
Schema: schema,
RequestString: r.URL.Query().Get("query"),
})
json.NewEncoder(w).Encode(result)
})
http.ListenAndServe(":8080", nil)
}
Когда я пытаюсь запустить команду от почтальона, я получаю сообщение об ошибке {"data":null,"errors":[{"message":"Схема не настроена для мутаций","location":[{"line":1,"столбец":1}]}]}
http://localhost:8080/graphql?query=mutation+_{createUser(userName:"ABC",emailID:"abc@abc.com"){userName,emailID}}
это URL-адрес, который я пытаюсь получить от почтальона. Я имею в виду начало работы с GraphQL с использованием Golang для реализации мутации в Go
Может ли кто-нибудь помочь, какие изменения здесь необходимо сделать?
1 ответ
Для схемы, которую вы используете для мутации, требуется объект запроса.
schema, _ := graphql.NewSchema(graphql.SchemaConfig{
// QUERY NEEDED HERE !
Mutation: rootMutation,
})
Запрос для userType можно определить таким образом и добавить в схему.
rootQuery := graphql.NewObject(graphql.ObjectConfig{
Name: "Query",
Fields: graphql.Fields{
"lastUser" : &graphql.Field{ // "lastUser" name can be anything
Type: userType,
},
},
})
schema, _ := graphql.NewSchema(graphql.SchemaConfig{
Query: rootQuery,
Mutation: rootMutation,
})
Это исправит"Schema is not configured for mutations"
ошибка и ваши мутации успешно выполнены.