gpt4 book ai didi

go - 在没有结构的情况下解析 GraphQL 中的列表字段

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:57 24 4
gpt4 key购买 nike

我有这个 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

如您所见,我有一个 UserUsers 数据类型。到目前为止,还不错。

现在,假设我无法创建 UserUsers 结构,我可以在 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 结构。这必须是“通用的”。

最佳答案

您可以使用 map[string]interface{} 而不是 map[string]string,它应该可以工作。这是为什么呢?我真的不知道,我找不到任何关于 FieldResolveFn 的返回值可接受的文档。

users := []map[string]interface{}{{
"id": "1",
"name": "John",
}, {
"id": "2",
"name": "Jess",
}}
return users, nil

关于go - 在没有结构的情况下解析 GraphQL 中的列表字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43373333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com