登录
首页 >  Golang >  Go问答

如何在beego中实现高效的数据保存和更新操作?

来源:stackoverflow

时间:2024-02-20 09:48:25 320浏览 收藏

从现在开始,努力学习吧!本文《如何在beego中实现高效的数据保存和更新操作?》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我在 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。

由于它是对所有模型都有效的通用模型功能,我该如何解决这个问题?基本上,我想在单个查询中执行此操作,就像更新/保存 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 是否找到记录

更多详情可以参考ReadUpdate方法。

今天关于《如何在beego中实现高效的数据保存和更新操作?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>