gpt4 book ai didi

go - 如何在Golang Web应用程序中组织Web表单与数据库之间的交互?

转载 作者:行者123 更新时间:2023-12-01 22:14:34 25 4
gpt4 key购买 nike

我正在创建小型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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com