登录
首页 >  Golang >  Go问答

管理golang web应用程序中的web表单和数据库交互

来源:stackoverflow

时间:2024-02-27 13:45:14 438浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《管理golang web应用程序中的web表单和数据库交互》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我正在创建小型网络应用程序,我想组织主包中的数据库与位于其他包(“处理程序”)中的处理程序之间的交互。我想知道我是否可以在另一个包和数据库中的处理程序之间设置交互,或者将处理程序不在主包中放置是不好的做法?

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)
    }
}

以上就是《管理golang web应用程序中的web表单和数据库交互》的详细内容,更多关于的资料请关注golang学习网公众号!

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