【发布时间】:2019-01-11 11:09:27
【问题描述】:
所以我有一个结构,它包含一个链接到我的用户结构的AddedByUser 的数据。
我希望能够从AddedByUser 中删除UserLevel
现在我只想通过这个函数来实现,所以不能使用json:"-"。这将从所有 json 输出中删除它。我只想从这一功能中删除它。
我还应该说这些是 Gorm 模型,当我试图删除 10 选项(UserLevels)时,它只会从所有数据中删除外部数据集而不是 UserLevel。
{
"ID": 1,
"CreatedAt": "2019-01-08T16:33:09.514711Z",
"UpdatedAt": "2019-01-08T16:33:09.514711Z",
"DeletedAt": null,
"UUID": "00000000-0000-0000-0000-000000000000",
"Title": "title000",
"Information": "info999",
"EventDate": "2006-01-02T15:04:05Z",
"AddedByUser": {
"ID": 2,
"CreatedAt": "2019-01-08T15:27:52.435397Z",
"UpdatedAt": "2019-01-08T15:27:52.435397Z",
"DeletedAt": null,
"UUID": "b019df80-a7e4-4397-814a-795e7e84b4ca",
"Firstname": "Me",
"Surname": "admin",
"Password": "....",
"Email": "admin@email.co.uk",
"UserLevel": {
"ID": 0,
"CreatedAt": "0001-01-01T00:00:00Z",
"UpdatedAt": "0001-01-01T00:00:00Z",
"DeletedAt": null,
"LevelTitle": "",
"UserLevel": null
},
这就是我尝试过的,
data := []models.MyData{}
data = append(data[0:2])
我有大约 14 个结果,没有附加它会加载所有结果,但这样只会加载两个结果。想法是删除UpdateAt 或Title。因为我不确定 gorm 模型信息是否全为 0,或者切片是否将它们视为 0、1、2、3、4 等。
我也尝试过覆盖模型切片,虽然我可以访问每个部分,但我似乎无法找到一种简单的方法来按名称从结构中删除数据?地图似乎有,但没有结构,我不知道为什么?
谢谢。
更新
这是我正在使用的模型:
//Model
type MyData struct {
gorm.Model
UUID uuid.UUID
Title string
Information string
EventDate time.Time
AddedByUser Users `gorm:"ForeignKey:added_by_user_fk"`
AddedByUserFK uint
}
//Users Model
type Users struct {
gorm.Model
UUID uuid.UUID
Firstname string
Surname string
Password string
Email string
UserLevel UserLevels `gorm:"ForeignKey:user_level_fk" json:",omitempty"`
UserLevelFK uint
}
【问题讨论】:
-
您不能从结构值中删除字段,因为这是其类型的一部分。但是,您可以将其设置为零值。
-
那是 Go 的一部分吗?因为那只是愚蠢,我应该能够控制每个功能的信息流,而不仅仅是全有或全无
-
这是所有静态类型语言的一部分,而不仅仅是 Go。您应该将类型定义添加到问题中,以获得问题的具体解决方案。
-
构建另一个结构怎么样?没有添加级别,然后只导入我想要显示的内容?不确定这是否可能?
-
当然可以,而且是一个有效的解决方案。但是,如果这是最简单的解决方案取决于您的类型定义,这就是您应该将它们添加到问题中的原因。也包括
Users类型。
标签: go