首页 > 解决方案 > 使用 golang 在 Machinebox GraphQL 突变中将嵌套 JSON 作为变量传递

问题描述

您好 Golang 专家,

代码:

func Mutate(data map[string]string, mutation string) interface{} {
    client := GQLClient()

    graphqlRequest := graphql.NewRequest(mutation)
    graphqlRequest.Var("data", data)

    var graphqlResponse interface{}
    if err := client.Run(context.Background(), graphqlRequest, &graphqlResponse); err != nil {
        panic(err)
    }

    return graphqlResponse
}

突变:

    mutation createWfLog($data: WfLogCreateInput)
        {
        createWfLog (data: $data){
            taskGUID {
                id
                status
                notes
            }
            event
            log
            createdBy
            }
        }
    

数据变量形状:

{
  "data": {
    "event": "Task Create",
    "taskGUID": {
      "connect": {"id": "606f46cdbbe767001a3b4707"}
    },
    "log": "my log and information",
    "createdBy": "calvin cheng"
  }
}

如前所述,嵌入式 json(taskGUID 的值)存在问题。如果 value 是简单的字符串类型,那不是问题。

任何帮助表示赞赏

卡尔文

标签: gointerfacegraphql

解决方案


我已经弄清楚了……这是我对 Golang 的菜鸟的一个例子。

我不需要进行所有这些数据转换或任何此类疯狂的类型转换。出于某种原因,我脑子里想的一切都必须是机器箱 Var(key, value) 工作的地图

感谢xarantolus的引用站点,我能够构建一个合适的支柱。我用我的变量数据(这是一个嵌套的 json)填充了支柱,突变运行得很好!

谢谢!


推荐阅读