我需要更新用户配置文件,我正在获取整个配置文件,允许用户编辑他想要的内容,然后再次将整个配置文件发送到服务器以保存更新的任何值,但它不起作用。
User {
Address {
Country {
// fields
},
// fields
},
Settings {
// fields
},
username: string,
email: string,
}
为了避免复杂化,我想发送整个记录,保存所有内容,更新任何内容或为未更新的字段再次保存旧值。
我试过这个:
// Update User data
func (r *RepositoryUserCrud) Update(uid int, user models.User) (int, error) {
var err error
// 1, did not work, getting Error 1062: Duplicate entry for email
err = r.db.Debug().Model(&models.User{}).Where("id = ?", unit(uid)).Updates(user).Error
// 2, did not work, getting Error 1062: Duplicate entry for email
err = r.db.Save(&user).Error;
// 3, I tried to skip the duplicate key error by using {onConflict: DoNothing}
err = r.db.Debug().Clauses(r.db.Model(&models.User{})
.Where("id = ?", uint(uid)))
.OnConflict{DoNothing: true}
.Updates(user)
}
关于如何做到这一点的任何建议?
如果深度嵌套对象中发生了更改,如何将更改应用于其表?还是我应该手动执行此操作?
www说
相关分类