我的資料結構如下
type DynamicConfig struct {
gorm.Model
AppName string `json:"app_name" form:"app_name"`
Creator string `gorm:"<-:create" json:"creator" form:"creator"`
Editor string `json:"editor" form:"editor"`
Metadata string `json:"metadata" form:"metadata"`
}
我的想法是創建者創建后無法更改,所以我使用gorm:"<-:create",檔案說它可以允許讀取和創建。資料庫中有這么一段資料。
{
"ID": 4,
"CreatedAt": "2021-11-30T13:05:31Z",
"UpdatedAt": "2021-12-01T06:22:02Z",
"DeletedAt": null,
"app_name": "test3",
"creator": "xx",
"editor": "yy",
"metadata": "test3"
}
這是我的更新方法:
func UpdateDynamicConfig(dc DynamicConfig) error {
res, err := GetDynamicConfig(DynamicConfig{
AppName: dc.AppName,
})
if err != nil {
return err
}else if len(res) == 0 {
return errors.New("app conf not exists")
}else if len(res) != 1 {
return errors.New("more than one config meet the criteria, please check")
}
config := res[0]
result := DB.Model(&config).Updates(dc)
return result.Error
}
我這樣呼叫方法
config := model.DynamicConfig{AppName: "test3", Creator: "xxxx"}
model.UpdateDynamicConfig(config)
然后創建者更新為 xxxx。我怎樣才能防止一個欄位被更新? 請幫幫我,非常感謝!
uj5u.com熱心網友回復:
請使用省略它不會在更新表中的資料時考慮該列。請參考此鏈接省略
result := DB.Model(&config).Omit("creator").Updates(dc)
或者
有關欄位級權限,請參閱此鏈接。
你可以試試這個
Name string `gorm:"->;<-:create"` // allow read and create
uj5u.com熱心網友回復:
在更新中省略欄位的最簡單方法是使用 Omit 函式:
result := DB.Model(&config).Omit("Creator").Updates(dc)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371076.html
下一篇:進口周期多于兩級
