doc(readme):更新项目编写说明。

This commit is contained in:
徐涛 2022-09-18 22:15:40 +08:00
parent ecd2238c9e
commit 3f8ced5453

View File

@ -11,3 +11,16 @@
项目详细设计方案见[详细设计方案](https://kdocs.cn/l/cawe22YUV3bJ),该设计方案未经许可,禁止私自修改。
项目任务分配与状态概览表见[任务概况](https://kdocs.cn/l/camrXvBMlCNs)。
## 项目代码编写要点
### 数据库访问
项目所式的数据库框架采用的是Bun该框架采用贴近SQL语句的数据库方式但是在使用过程中需注意以下几点。
1. 要执行一个语句,必须提供一个`context.Context`类型的上下文,推荐采用`context.WithTimeout()`生成。上下文中携带的超时时间应该能覆盖超时时间所需要运行的全部语句。
1. 语句中用来指定操作目标数据表的`Model()`方法其接受的是一个目标变量的地址如果传入的是一个slice那么就一定需要使用`&`获取其地址,如果是使用`&struct{}`或者`new()`初始化的,则可以直接作为参数传入。
1. 数据库中的时间字段都是带有时区的但是bun中都是使用UTC时间的对于数据库中`timestamptz`类型的字段,可以正常的按照数据库配置的时区保存时间,但是对于没有携带时区的`date`类型,就不能直接向其中传入`time.Time`类型的参数了,必须手工将其转化为字符串形式。
1. 使用Relation关联获取其他数据表内容的时候被`Relation()`提及的数据表中配置的`alias`名称将不起作用语句中的数据别名实际上是被关联字段名称的snake_case形式。
1. 如果需要只从Relation关联数据表中选择一部分字段不能直接在主查询语句中使用`Column()`方法,必须在`Relation()`方法的第二个参数中声明。
1. 如果需要对Relation关联表中的字段设置`Where`条件子句,那么就必须使用`relation_name__column_name`的双下划线字段选择形式,直接在`Relation()`方法中设定`Where`子句行不通。