配置
数据库准备好之后,后端 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
基本格式:
postgres://username:password@localhost:5432/database_name
MySQL
基本格式:
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]
在使用 MySQL 驱动时,需要至少指定下面 2 个参数:
clientFoundRows=true
和 parseTime=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 ofDATE
andDATETIME
values totime.Time
instead of[]byte / string
. The date or datetime like0000-00-00 00:00:00
is converted into zero value oftime.Time
.
这个方便语言之间的交流。