热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BindingoflowercaseGraphQLtypenametoGostruct

Whathappened?WehavesomeexistingGraphQLschemathatuseslowercasedna


What happened?

We have some existing GraphQL schema that uses lower cased names and existing Go structs that are upper cased to be exportable. The type with the lower cased name also includes another type in its fields. Autobinding does not automatically match these two but that is easy enough to work around. I have tried both using the goModel directive and by explicit binding in gqlgen.yml. In both of these cases the binding works but some of the generated functions are lowercased and so not exported. Specifically it is a problem with the child resolver.

I get this error

1
galleryResolver not exported by package generated

with the example code below.

What did you expect?

I expected generated functions to be uppercased and so exported as they would be if the GraphQL type name was upper cased but then bound to the lowercased GraphQL schema name.

Minimal graphql.schema and models to reproduce


Schema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
directive (model: String, models: [String!]) on OBJECT                                                                                                

    | INPUT_OBJECT                                                                                                                                            

    | SCALAR                                                                                                                                                  

    | ENUM                                                                                                                                                    

    | INTERFACE                                                                                                                                                

    | UNION                                                                                                                                                    



type Query {                                                                                                                                                  

  galleries: [gallery!]!                                                                                                                                      

}                                                                                                                                                              



type gallery (model: "tmp/gqlgen-bug/graph/model.Gallery") {                                                                                          

  id: ID!                                                                                                                                                      

  images: [Image]                                                                                                                                              

}                                                                                                                                                              



type Image {                                                                                                                                                  

  url: String                                                                                                                                                  

}


Model

1
2
3
4
5
6
7
8
type Gallery struct {                                                                                                                                          

  ID     string                                                                                                                                                

  Images []GalleryImage                                                                                                                                        

}                                                                                                                                                              



type GalleryImage struct {                                                                                                                                    

  URL string                                                                                                                                                  

}


versions



  • 1
    gqlgen version

    - v0.11.3



  • 1
    go version

    - 1.14.3


  • dep or go modules? Go modules

该提问来源于开源项目:99designs/gqlgen

Sure the




1
layout: follow-schema

doesn't do it perfectly unfortunately you can't just manually fix

1
schema.resolvers.go

changes need to be made to generated.go also. I think this is an opportunity to improve generation of both files.



The fix seems fairly straight forward, in generated.go the Resolver interface needs to expose the gallery method and the galleryResolver interface needs to be exposed. Only after those changes can you make a change like this in schema.resolvers.go which allows it all to work.

1
func (r *Resolver) Gallery() generated.GalleryResolver { return &galleryResolver{r} }



   



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
author-avatar
php.com
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有