iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
Modern Web

Golang - 從打造一個 API 開始學起系列 第 12

[Day12] API 與 postgresql 連接

本文同步發表於: 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 需要的基本機制建立起來


上一篇
[Day11] 建構 API
下一篇
[Day13] 回傳資料的格式與錯誤訊息
系列文
Golang - 從打造一個 API 開始學起30

尚未有邦友留言

立即登入留言