我目前正在尝试处理一个小型 Go 项目,并且我有一个要解决的问题。
我目前github.com/jinzhu/gorm
用于处理 GraphQL 服务器后端的数据库操作,并且我希望能够将数据库连接存储在整个项目(包括子包)都可访问的全局变量中。
db
我的第一次尝试是通过在我的main.go
文件中执行以下操作来创建一个名为的变量:
var db *gorm.DB
var err error
然后在init()
函数内部:
func init() {
db, err = gorm.Open("postgres", "credential stuff here")
db.AutoMigrate(&modelStructHere)
defer db.Close()
}
没有任何崩溃,但我会假设由于范围限制,该db
变量只能在内部使用main.go
,但我还需要能够在内部使用它gql/gql.go
,我的 GraphQL 解析器当前所在的位置。
也许我应该将这段代码(DB init)移动到实际的解析器文件中,因为无论如何除了这样的事情之外,DB 操作真的没有用,所以也许这就是问题所在?
提前致谢!