使用Gqlgen时,如何在GraphQL SDL中生成*[]string类型结构体字段?
解决gqlgen生成GraphQL API时指针切片字段不匹配的问题
方法1:通过gqlgen.yml配置模型映射
在项目的gqlgen.yml配置文件中,添加模型字段的类型映射,明确指定GraphQL字段对应的Go指针切片类型:
models: Pets: fields: multiEan: type: "*[]string"
保存配置后,重新执行生成命令:
go run github.com/99designs/gqlgen generate
方法2:复用自定义结构体绑定
如果已经定义好目标Pets结构体,可让gqlgen直接复用该结构体,避免自动生成不符合要求的代码:
- 确保结构体字段与GraphQL字段名一致(字段名不同时可添加
gqlgen标签映射):
type Pets struct { multiEan *[]string // 字段名与SDL中multiEan一致时无需额外标签 }
- 修改
gqlgen.yml,将结构体所在的包路径加入autobind列表:
autobind: - "github.com/your/project/package" # 替换为结构体实际所在的包路径
- 重新执行生成命令即可。
方法3:在SDL中使用@goField指令
直接在GraphQL SDL的字段上通过@goField指令指定对应的Go类型:
type Pets { multiEan: [String!] @goField(type: "*[]string") }
执行生成命令后,gqlgen会按照指定类型生成指针切片字段。
内容的提问来源于stack exchange,提问作者Andres Fernando Baron
相关产品推荐
相关产品推荐

