【发布时间】:2017-09-08 11:00:06
【问题描述】:
我有这个 GraphQL 类型:
type User {
id: String
name: String
}
由
定义var UserObject = graphql.NewObject(graphql.ObjectConfig{
Name: "User",
Fields: graphql.Fields{
"id": &graphql.Field{
Type: graphql.String,
},
"name": &graphql.Field{
Type: graphql.String,
},
},
})
在我的根查询中,我想用查询字段users链接一些用户:
var RootQuery = graphql.NewObject(graphql.ObjectConfig{
Name: "RootQuery",
Fields: graphql.Fields{
"users": &graphql.Field{
Type: graphql.NewList(UserObject),
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
return Users{
User{
ID: "1",
NAME: "John",
},
User{
ID: "2",
NAME: "Jess"
}
}, nil
},
},
},
})
type User struct {
ID string
NAME string
}
type Users []User
如您所见,我有 User 和 Users 数据类型。到目前为止,一切顺利。
现在,假设我无法创建 User 和 Users 结构,我可以在 Resolve 函数中返回什么来代替它们?
我想到了[]map[string]string。应该是这样的:
var RootQuery = graphql.NewObject(graphql.ObjectConfig{
Name: "RootQuery",
Fields: graphql.Fields{
"users": &graphql.Field{
Type: graphql.NewList(UserObject),
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
users := []map[string]string {
map[string]string {
"id" : "1",
"name" : "John",
},
map[string]string {
"id" : "2",
"name" : "Jess",
},
}
return users, nil
},
},
},
})
但它不起作用。查询结果中的每个属性都是nil。有没有办法解决这个问题?请记住,我无法创建 User 结构。这必须是“通用的”。
【问题讨论】:
-
您能否提供您要传递给
graphql.NewList的UserObject的定义? -
完成。这是User类型的定义
标签: go graphql graphql-go