go - 子对象未使用 golang 解析 graphql

标签 go graphql graphql-go

对象内部的对象本身被解析为一个空字段。

输入:

{
  Products(search: {limit: 1, filters: {product_id: {gte: 5}}}) {
    data {
      product_id
      product_name
      sales_history{
        total_check
      }
    }
  }
}

输出:

{
  "data": {
    "Products": {
      "data": [
        {
          "product_id": 35,
          "product_name": "testpr",
          "sales_history": {}
        }
      ]
    }
  }
}

产品类型:

gql.ProductType = graphql.NewObject(graphql.ObjectConfig{
        Name: "Product",
        Fields: graphql.Fields{
            "product_id": &graphql.Field{
                Type: graphql.Int,
            },
            "product_name": &graphql.Field{
                Type: graphql.String,
            },
            "sales_history": &graphql.Field{
                Type: gql.SalesHistoryType,
            },
        },
    })

销售历史类型:

gql.SalesHistoryType = graphql.NewObject(graphql.ObjectConfig{
    Name: "sales_history",
    Fields: graphql.Fields{
        "total_check": &graphql.Field{
            Type: graphql.Float,
        },
    },
})

在Resolve returning map in interface中:

map[data:[map[product_id:35 product_name:testpr sales_history:map[total_check:671.20]]]]

我自己创建 map “sales_history”,否则与字段 sales_history 相对 - null

最佳答案

问题出在最终 map 的打包上。

错了:

tmp := make(map[string]interface{}, 0)
tmp["total_check"] = v["total_check"]
v["sales_history"] = tmp

*部分字段被隐藏

没错:

v["sales_history"] = make(map[string]interface{}, 0)
v["sales_history"].(map[string]interface{})["total_check"] = v["total_check"]

关于go - 子对象未使用 golang 解析 graphql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55183695/

相关文章:

elasticsearch - GraphQL与Elasticsearch我应如何使用以许多不同模式返回的快速搜索性能?

elasticsearch - 对于Rust Rocket框架,是否可以将GraphQL连接到elasticsearch?

go - 我的节点ID的base64哈希值不是我期望的值

go - Graphql : Schema is not configured for mutations in Go

angularjs - 在 GoLang 中解析嵌入式结构形式的值

go - Go中定义的io库在哪里?

go - 最小化 Go 中垃圾收集问题的最佳实践

Go函数语法解释

sequelize.js - graphQL 查询给我空对象作为响应

go - 作为对象的变异参数