如何解决如何在beego中编写有效的保存和更新功能?
我在BaseModel中具有以下功能,可以在任何地方使用。
func (d *Dummy) Save() (int64,error) {
o := orm.NewOrm()
var err error
var count int64
if d.Id == 0 {
count,err = o.Insert(d)
} else {
count,err = o.Update(d)
}
return count,err
}
我正在这样使用
d := models.Dummy{Id: 10}
d.someValue = "x"
d.Save()
问题是我已经在数据库中使用值“ d.OtherValue”。
执行此功能后,它将更新为0。
由于它是对所有模型都有效的通用模型函数,我该如何解决?基本上,我想在单个查询中执行此操作,就像update / Save Django ORM
解决方法
您需要先加载记录。您缺少Read(&struct)
ORM方法:
o := orm.NewOrm()
d := models.Dummy{Id: 10}
readErr:= o.Read(&d)
// check if the record with Id of 10 exists and update...
if readErr!= o.ErrNoRows {
if rowsAffected,err := o.Update(&d); err == nil {
// record updated (rowsAffected indicates the number of affected rows)
}
} else {
// record does not exist,create a new one
id,insertErr:= o.Insert(&d)
if insertErr== nil {
// success
}
}
然后您应该检查ORM是否找到了记录
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。