【发布时间】:2019-01-13 21:38:03
【问题描述】:
基本上,我想要做的是将字符串 ex: ["aa","bb","vv"] 列表发送到 graphql Mutation 字段,目前这是我的 Mutation Schema
"listTest": &graphql.Field{
Type: QueryMessageType,
Args: graphql.FieldConfigArgument{
"listNew": &graphql.ArgumentConfig{
Description: "Example List of Json String",
Type: graphql.NewList(graphql.NewNonNull(graphql.String)),
},
},
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
list := p.Args["listTest"].([]string)
return listTest(list)
},
},
和方法listTest
func listTest(testing[]string) (*QueryMessage, error) {
fmt.Println(testing)
return &QueryMessage{
QueryBody: "nothing to do here",
}, nil
}
但是,当我在 INSOMNIA 中提出请求时,响应是:
{
"data": {
"listTest": null
},
"errors": [
{
"message": "interface conversion: interface {} is []interface {}, not []string",
"locations": []
}
]
}
请求是这样的:
mutation{
listTest(listNew: ["aa","bb","vv"]){
querybody
}
}
谁能告诉我如何在我的 Go 服务器中接收字符串列表。谢谢! :)
更新 当我调用 fmt.Println(p.Args["listTest"])
结果是:[aa bb vv]
已解决
按照投票答案的说明,脚本现在可以完成他的工作。这是最终结果:
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
var groupIDs []string
for _, gid := range p.Args["list"].([]interface{}) {
groupIDs = append(groupIDs, gid.(string))
}
for _, final := range groupIDs {
fmt.Println(final)
}
return listTest(groupIDs)
},
在控制台中我得到了这个:
aa
bb
vv
【问题讨论】: