資料庫整合

曹阿宇發表於2020-05-30

當您生成一個新的 Buffalo 應用程式時,您可以選擇帶有 -- db 型別標誌的目標資料庫。 例如,要生成一個支援 MySQL 資料庫的新應用程式,你可以編寫以下程式碼:


$ buffalo new coke --db-type mysql

預設情況下,Buffalo 將生成一個以 PostgreSQL 作為後備資料庫的應用程式。

跳過資料庫支援

如果您想在不使用 Pop 的情況下處理資料庫,或者如果您正在構建一個沒有資料庫的應用程式,也可以使用 -- skip-Pop 標誌來跳過所有資料庫元件的生成。


$ buffalo new coke --skip-pop

事務中介軟體

水牛城提供了一個 pop 中介軟體來簡化水牛城內的資料庫使用: github.com/gobuffalo/Buffalo-Pop

設定

如果您在建立新專案時選擇使用 Pop,則預設情況下為您配置此中介軟體。


func App() *buffalo.App {

if app == nil {

// [...]

app.Use(poptx.PopTransaction(models.DB))

// [...]

app.GET("/", HomeHandler)

}

return app

}

Poptransaction (models.DB)使用到配置資料庫的連線建立一個新的 PopTransaction 中介軟體:

  • 記錄在請求呼叫資料庫期間花費的總時間

  • 在資料庫事務中包裝每個 HTTP 請求

  • 如果執行中介軟體和操作沒有錯誤,則提交; 響應狀態為2xx 或3xx否則後退

手動處理事務

如果您需要手動處理事務,您可以跳過給定路由的中介軟體:


func App() *buffalo.App {

if app == nil {

// [...]

txm := poptx.PopTransaction(models.DB)

app.Use(txm)

a.Middleware.Skip(txm, HomeHandler)

// [...]

app.POST("/form", FormHandler)

app.GET("/", HomeHandler)

}

return app

}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

曹阿宇

相關文章