作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建小型Web应用程序,我想组织主程序包中的DB与位于其他程序包中的处理程序(“处理程序”)之间的交互。我想找出我是否可以设置另一个程序包与db中的处理程序之间的交互,或者将处理程序不在主程序包中是一种不好的做法吗?
package main
import (
"handlers"
"net/http"
)
func main() {
//...
DB, err = ConnectToPostgres()
//...
http.HandleFunc("/adduser/", handlers.AddUser)
http.HandleFunc("/getinfo/", handlers.GetUserInfo)
http.ListenAndServe(":8080", nil)
}
最佳答案
我总是用这个代码
package providers
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/postgres"
"log"
)
var SQL *gorm.DB
type Postgres struct{}
func (s Postgres) Connect() *gorm.DB {
dsn := s.getDSN()
instance, err := gorm.Open("postgres", dsn)
if err != nil {
log.Panicf("Postgres Error: %+v", err)
}
return instance
}
func (s *Postgres) getDSN() string {
c := Config.Storage.Postgres
dsn := fmt.Sprintf("user=%s", c.User)
if c.Pass != "" {
dsn += fmt.Sprintf(" password=%s", c.Pass)
}
dsn += fmt.Sprintf(" host=%s", c.Host)
dsn += fmt.Sprintf(" dbname=%s", c.Name)
if !c.SSL {
dsn += " sslmode=disable"
}
return dsn
}
func init() {
conn := Postgres{}
SQL = conn.Connect()
SQL.LogMode(false)
if Config.App.Debug {
SQL.LogMode(true)
}
}
关于go - 如何在Golang Web应用程序中组织Web表单与数据库之间的交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61302072/
我是一名优秀的程序员,十分优秀!