gpt4 book ai didi

postgresql - 插入数据库时​​如何忽略嵌入式结构字段?

转载 作者:行者123 更新时间:2023-12-01 22:11:22 24 4
gpt4 key购买 nike

我有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
如何在不创建另一个没有“Y”字段的基本模型的情况下将“b”插入数据库?

最佳答案

当您将结构分配给另一个结构并创建该结构的实例时,所有结构字段均已填充为它们的默认数据类型值。
例如:int的默认值为0。
因此,您对此问题有2个解决方案。

  • 创建两个不同的结构(不带Base结构),仅AB。像这样:(也许您知道这个解决方案。)。
  • type A struct {
    X int
    Y int
    Z int
    }

    type B struct {
    X int
    W int
    }
  • 使用struct tags防止使用gorm插入。

  • 注意:我没有测试过。
    type Base struct {
    X int
    Y int `json:"y,omitempty"`
    }

    type A struct {
    Base
    Z int
    }

    type B struct {
    Base
    W int
    }

    关于postgresql - 插入数据库时​​如何忽略嵌入式结构字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63462553/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com