【发布时间】:2021-10-20 23:04:42
【问题描述】:
在 GORM 中是否可以给 Create() 一个 Struct A 作为输入 并将 结果存储在 Struct B 中?
我在文档或互联网上没有找到任何合适的东西。
背景如下: 我让 Postgres 创建字段 id、createdAt 和 updatedAt - 因此它们不应该是输入结构 A 的一部分(类似于 DTO/DAO)。
但是,在 Create() 的结果中,这些字段是存在的 - 因此它们应该被解析为包含表的所有字段的结构 B。
id、createdAt 和 updatedAt 没有明确设置的问题:
Go 会根据数据类型(0、nil 等)初始化未使用默认值显式定义的结构字段。
对于 UUIDv4 类型的 id,则值为 00000000-0000-0000-0000000000。
显然,这个传递的值会覆盖 id 列的 Postgres 的 gen_random_uuid() 值。
一旦正常工作,就会出现重复键错误。 另一方面,createdAt 和 updatedAt 似乎是由 Postgres 正确生成的,尽管我也在那里找到了 Go 的默认值。
谢谢!
PS:当然,我可以简单地创建一个 UUID 并将其提供给数据库,但我主要感兴趣的是我的意图是否可以用 GORM 实现。
【问题讨论】:
标签: go-gorm