0

我在 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 在生成模型时跳过一些字段?还是您有其他解决方案来处理它?

4

1 回答 1

1

您可以配置模型的生成位置,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

于 2021-07-29T08:44:52.010 回答