【问题标题】:Organize Go code for CRUD operations on MongoDB为 MongoDB 上的 CRUD 操作组织 Go 代码
【发布时间】:2014-09-25 19:12:38
【问题描述】:

我正在用 Go 编写一个 Web 应用程序,但在整理我的代码时遇到了一些麻烦。
对于 MongoDB 上的基本 CRUD 操作,我总是必须在我的代码开头做这样的事情:

session, err := mgo.Dial("localhost")
if err != nil {
    return err
}
defer session.Close()

但我不喜欢我总是必须重复相同的代码。

有没有办法让它更短或在我的代码中避免很多这种情况:

if err != nil {
    return err
}

我是 Go 新手,所以我可能遗漏了一些明显的东西。

【问题讨论】:

    标签: go mgo


    【解决方案1】:

    首先是实际问题,不,那是检查错误的方法。

    其次,使用mgo的正确方法是,每次需要做某事的时候,都拥有一个sesson,然后克隆它,例如:

    var (
        mgoSession *mgo.Session
    )
    
    func init() {
        sess, err := mgo.Dial("localhost")
        if err != nil {
            panic(err) // no, not really
        }
        mgoSession = sess
    }
    
    func do_stuff_with_mgo() {
        sess := mgoSession.Clone()
        defer sess.Close()
        //do stuff with sess
    }
    
    func main() {
        go do_stuff_with_mgo()
        go do_stuff_with_mgo()
        do_stuff_with_mgo()
    }
    

    还可以查看this关于mgo的文章(我不是作者,但它帮助我学习了mgo,虽然它可能有点过时了。)

    【讨论】:

    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2018-08-24
    • 1970-01-01
    • 2018-11-29
    • 2011-08-08
    相关资源
    最近更新 更多