我有这个GraphQL类型:解决在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'的定义吗? – mkopriva
完成。这是类型的定义用户 –