本文同步發表於: Sponge Records
本文會讓 api 能與 postgresql 連接,由於 api 功能大部分都需要與資料庫溝通,故先實作基礎
我們將會先實作 db.go ,與 postgrsql 進行溝通,並且讀取寫在 .env 內的設定,因此需要引用jinzhu/gorm 這個 orm 工具來操作 postgresql 與 joho/godotenv 來取得 .env 的資料
db.go
package models
import (
"os"
"fmt"
_ "github.com/jinzhu/gorm/dialects/postgres" //使用 gorm 的 postgresql 連結功能
"github.com/jinzhu/gorm" //使用 gorm 作為 orm 工具
"github.com/joho/godotenv" //使用 godotenv 取得 .env 內的資料
)
var db *gorm.DB
func init() {
e := godotenv.Load()
if e != nil {
fmt.Print(e)
}
//透過 Getenv 來讀取 .env
username := os.Getenv("db_user")
password := os.Getenv("db_pass")
dbName := os.Getenv("db_name")
dbHost := os.Getenv("db_host")
//連結 db
dbUri := fmt.Sprintf("host=%s user=%s dbname=%s sslmode=disable password=%s", dbHost, username, dbName, password)
fmt.Println(dbUri)
//錯誤攔截與建立連接
conn, err := gorm.Open("postgres", dbUri)
if err != nil {
fmt.Print(err)
}
db = conn
db.Debug().AutoMigrate(&Account{}, &Contact{})
}
func GetDB() *gorm.DB {
return db
}
.env
db_name = {資料庫名稱}
db_pass = {資料庫密碼}
db_user = {使用者名稱}
db_type = {資料庫類型 ex.postgres}
db_host = {資料庫連線ip}
db_port = {資料庫連線端口}
token_password = jwtPassword
database_url = {資料庫網址}
透過 db.go 讀取 .env 內的資訊,並且與 postgresql 建立連接
下回將建立錯誤回報機制,將 api 需要的基本機制建立起來