go - 使用 golang 在 Machinebox GraphQL 突变中将嵌套 JSON 作为变量传递
问题描述
您好 Golang 专家,
我正在使用 golang 中的 Machinebox“github.com/machinebox/graphql”库作为我的 GraphQL 服务器的客户端。
具有单层 JSON 变量的突变工作得很好
但是,我不知道如何将嵌套的 JSON 作为变量传递
使用单层 JSON,我只需创建一个
map[string]string
类型并传递给 Var 方法。这反过来填充了我的 graphql$data
变量machinebox (graphql.Request).Var 方法将空
interface{}
值作为值,因此map[string]string
工作正常。但是嵌入式 json 只会引发错误。
代码:
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 是简单的字符串类型,那不是问题。
- 尝试使用结构来定义每个嵌套,传入结构。
- 尝试将结构解组为 json。同样的错误。
任何帮助表示赞赏
卡尔文
解决方案
我已经弄清楚了……这是我对 Golang 的菜鸟的一个例子。
我不需要进行所有这些数据转换或任何此类疯狂的类型转换。出于某种原因,我脑子里想的一切都必须是机器箱 Var(key, value) 工作的地图
感谢xarantolus的引用站点,我能够构建一个合适的支柱。我用我的变量数据(这是一个嵌套的 json)填充了支柱,突变运行得很好!
谢谢!
推荐阅读
- javascript - 表单生成器角度无法绑定到“formGroup”,因为它不是“表单”的已知属性
- bash - 在 bash 中使用一组以相同字符串开头的变量
- python - Redshift 新集群过去可以访问,但现在不再可用
- python - 过滤列表列的列表,然后在 Python 中逐行拆分(分解)
- webpack - 单个 webpack 包中的重复依赖项,但包锁定文件中没有
- linker - 错误 L6242E:无法链接对象,因为其属性与图像属性不兼容
- macos - 符号链接的行为不像符号链接
- java - 使用自定义逻辑将 JSON 有效负载反序列化为 JsonNode
- angular - 如何通过按角度 12 的箭头键将 div 移动 10px?
- android - 改造 2 不适用于 android 10 (api 29)