GqlGen 错误地生成值字段中包含冒号字符的指令

问题描述 投票:0回答:1

我使用 https://github.com/99designs/gqlgen 从 graphql 模式生成 golang 代码。我需要能够将 gorm 标签添加到生成的 golang 类型中。为此,我声明了一个自定义 go 标签的指令(在

schema.directives.gql
中):

directive @goTag(
    key: String!
    value: String
) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION

然后我在 graphql 模式文件中按以下方式使用它:

type Value {
  value: Float!
  unit: String!
}

type Order {
    name: String! @goTag(key: "gorm", value: "primaryKey")
    amount: Value! @goTag(key: "gorm", value: "embedded;embeddedPrefix:dissolutionAmount_") 
    submitterRef String!
    submitter: Person! @goTag(key: "gorm", value: "foreignKey: SubmitterRef")  
}

然后我运行代码生成:

go run github.com/99designs/gqlgen generate
,生成的代码包含 gorm 标签,该标签会在“:”字符之后剪切文本:

type Order struct {
    Name              string    `json:"name" gorm:"primaryKey"` // <--- this is correct
    Amount          Value     `json:"amount" gorm:"embedded;embeddedPrefix` // INCORRECT - everything after "embeddedPrefix" is truncated: ":dissolutionAmount_" is missing, including trailing double quote
    SubmitterRef string. `json:"submitterRef"`
    Submitter       Person    `json:"submitter" gorm:"foreignKey` // INCORRECT - value in gorm tag is truncated, ": SubmitterRef" is missing
}
go graphql go-gorm gqlgen
1个回答
0
投票

事实证明,gqlgen 中在生成 go 标签时存在一个错误,该错误会截断冒号之后的所有内容。有一个 open PR 可以解决这个问题,希望他们尽快解决。

作为一种解决方法(直到代码修复),我可能可以在 go 中创建模型并映射到 gql 配置中的 graphql 类型。

© www.soinside.com 2019 - 2024. All rights reserved.