Skip to main content

配置

数据库准备好之后,后端 serve 需要配置才能正确的连接和使用数据库。

在哪里配置

数据库驱动在配置文件 config.yaml 中配置,因为 ReactGO 支持从文件和环境变量中读取配置, 所以也可以通过环境变量来配置,这是配置加载器提供的功能,请参考配置文件。

配置语法

数据库驱动配置看起来像这样:

# 数据库配置
#
database:
# 数据库驱动,支持 sqlite, pgx, mysql
#
driver: sqlite

# 数据源,参考驱动文档
#
dsn: /tmp/reactgo.db

driver 是数据库驱动的名称,必须是 sqlite, mysql, pgx 中的一个,dsn 根据 driver 的不同而不同,后面会说明各种数据库的 dsn 写法。

数据源(dsn)

下面列出各种数据库的 dsn 写法。

Sqlite

Sqlite 的 dsn 是数据库的文件路径,例如 /tmp/reactgo.db

PostgreSQL

PostgreSQL 驱动文档

基本格式:

postgres://username:password@localhost:5432/database_name

MySQL

MySQL 驱动文档

基本格式:

[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]

在使用 MySQL 驱动时,需要至少指定下面 2 个参数: clientFoundRows=trueparseTime=true

clientFoundRows

clientFoundRows=true causes an UPDATE to return the number of matching rows instead of the number of rows changed.

ReactGO 在更新数据后,为了确保符合预期,会检查更新的行数,例如更新某个用户的地址,在执行完 update 操作后,会检查是否准确的更新了 1 行,不多也不少。如果不指定这个参数, 那么在数据没有改变的情况下(例如新旧地址相同)会返回 0 而不是 1,这将导致检查失败, 认为查询条件不正确。

parseTime

parseTime=true changes the output type of DATE and DATETIME values to time.Time instead of []byte / string. The date or datetime like 0000-00-00 00:00:00 is converted into zero value of time.Time.

这个方便语言之间的交流。