登录
首页 >  Golang >  Go问答

忽略嵌套结构字段插入数据库的方法

来源:stackoverflow

时间:2024-03-06 12:42:27 401浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《忽略嵌套结构字段插入数据库的方法》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我有2个数据库表; a 有 3 列,分别是 x、y、z b 有 2 列,分别是 x、w

我的go结构是这样的;

type base struct {
    x int
    y int
}

type a struct {
    base
    z int
}

type b struct {
    base
    w int
}

我像这样初始化我的结构;

a := a{base: base{x: 1, y:2}, z: 3}
    b := b{base: base{x: 1}, w: 4}

当我想使用 gorm.io orm 将它们插入数据库时​​,插入“a”没有任何问题,但无法插入“b”,因为 postgresql 给了我类似的错误

pq: column "y" of relation "B" does not exist

如何将“b”插入数据库而不创建另一个没有“y”字段的基本模型?


解决方案


当您将结构分配给另一个结构并创建结构实例时,所有结构字段都已填充它们的默认数据类型值。

例如:int 默认值为 0。

所以这个问题你有两个解决方案。

  1. 创建两个不同的结构体(没有base结构体),只是ab。像这样:(也许你知道这个解决方案。)。
type a struct {
    x int
    y int
    z int
}

type b struct {
    x int
    w int
}
  1. 使用 struct tag 来防止使用 gorm 进行插入。

注意:我没有对此进行测试。

type Base struct {
    X int 
    Y int `json:"y,omitempty"`
}

type A struct {
    Base
    Z int
}

type B struct {
    Base
    W int
}

理论要掌握,实操不能落!以上关于《忽略嵌套结构字段插入数据库的方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>