数据库集成

Buffalo 数据库集成

当您生成一个新的 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 协议》,转载必须注明作者和本文链接
caoayu
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!