在生成 GraphQl 模型时跳过一些字段

问题描述

我在 Golang 项目中使用 gqlgen 库从 GraphQl 文件生成解析器和模型。 在我的项目中,我使用一种机制从 gqlgen 生成的模型中生成查询

当该模型与他自己(圆圈)没有关系字段时,所有事情都是正确的。

我正在寻找不生成这些字段的方法,换句话说,我不需要这些字段出现在模型中。我只需要它的解析器。

例如,这是我的 GraphQl 文件

type Menu {
    ID: Int!
    SubMenu: Menu!
    }

这是生成的模型:

type Menu struct {
    ID           int            `json:"ID"`
    SubMenu      *Menu       `json:"Product"`
}

我只需要 SubMenu 字段的解析器。所以我的 gqlgen.yml 文件是一样的:


models:
  Menu:
    fields:
      SubMenu:
          resolver: true


有没有办法告诉 gqlgen 在生成模型时跳过某些字段?或者您有其他解决方案来处理它吗?

解决方法

您可以configure where the model will be generated in your gqlgen.yml例如:

model:
  filename: graph/model/models_gen.go
  package: model

但这并不意味着您不能在生成的包中添加自己的文件(此处为 model)。因此,您可以在这些文件中自定义您的模型,并且在模型生成期间它们将保持不变。此外,gqlgen 代码生成不会尝试生成包中已存在的模型结构。

例如,在上面的例子中,如果你在包 Menu 中声明你自己的 model 结构而不是在 gqlgen.yml 中指定的文件中,它不会生成代码对于生成的文件中的模型结构 Menu

示例

https://github.com/99designs/gqlgen/tree/master/example/starwars/models