【问题标题】:Graphql : Schema is not configured for mutations in GoGraphql:没有为 Go 中的突变配置模式
【发布时间】:2020-11-24 11:29:51
【问题描述】:

我正在尝试在Go 中写入Graphql Mutation。 我正在使用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":"Schema is not configured for mutation","locations": [{"line":1,"column":1}]}]}

http://localhost:8080/graphql?query=mutation+_{createUser(userName:"ABC",emailID:"abc@abc.com"){userName,emailID}}

这是我试图从邮递员那里访问的 URL。 我指的是 Getting Started With GraphQL Using Golang 在 Go 中实现变异

谁能帮忙看看这里需要做哪些改变?

【问题讨论】:

    标签: go graphql schema graphql-go


    【解决方案1】:

    您用于突变的 shema 需要一个查询对象。

    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" 错误并拥有您的 突变成功执行。

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 2017-08-10
      • 2018-07-02
      • 2016-03-08
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 2020-09-03
      • 2019-09-29
      相关资源
      最近更新 更多