历史go-zero篇章
1、go-zero架构逐一突破:go-zero 超时 timeout 到底有几处可以设置?你学废了吗
2、go-zero架构逐一突破:goland中的terminal与电脑terminal goctl版本 始终不一致问题
文章目录
前言
这是根据go-zero在项目实战中,作者发掘的问题与技巧,希望能与所有的gopher一起分享,一起成长,如果文章有错误,也请大家及时指正问题,作者会立刻修改
一、protobuf 从开始到放弃
众所周知,我们每次新创建一个数据库表
就需要将对应的crud的结构体写在protobuf中
这个工作无非是一件无脑而又浪费时间的工作
而且一旦数据类型映射错误还会导致orm生成model与.pb文件中的对应关系发生转化
可以参考这篇文章
【go-zero】go如何优雅地将 mysql 中 decimal 数据类型映射到 protobuf
好下面就开始我们的奇技淫巧吧
1、衷心的劝告
很多刚开始使用go-zero框架的用户
发现在api层返回的数据结构,从开始的标准驼峰,变成了大写首字母的驼峰结构
问题究其原因,其实就是我们在 protobuf中定义的大写
其实在protobuf定义大写并不是像go语言为了共有(public)
墙裂建议:我们定义protobuf的变量都为首字母小写
二、奇技淫巧 sql2pb
1、安装(环境中一次安装即可)
我们需要安装一个go插件
这个也是go-zero的贡献者,七牛云员工做的一个插件
将数据库类型直接映射成protobuf,非常感谢这位作者
大家使用时记得点一个star!!!
go install github.com/Mikaelemmmm/sql2pb@latest
2、查看需要的参数
sql2pb -h
三、丝滑的使用 sql2pb
1、安装(环境中一次安装即可)
参数比较多
sql2pb -go_package ./pb -host 127.0.0.1 -package pb -password 123456 -port 3306 -schema admin_pro -service_name xxxxRpc -user root -table member_order > ./xxxxRpc.proto
上面用到了一些参数 我们挨个说明一下:
-go_package:这里指的是如下图所示的 go_package
-package:这里指的是如上图所示的 package
-host:数据库链接地址(不要带上端口号)
-password:数据库密码
-port:端口号
-schema:数据库名
-service_name:生成的如下图所示
-user:数据库用户名
-table:表名,如果需要一次生成多个表,则可以用逗号隔离
./xxxxRpc.proto:生成到当前目录的一个proto文件
2、奇技淫巧
如果我们的proto文件已经有了
当再次执行这个指令则会覆盖所有的proto,就会把我们自己写的给覆盖了
此时该如何处理呢?
我们只需要更改几处,保证可以生成一个新的proto
我们只需要把新proto的内容粘贴到老的proto里面就可以了,然后删除
需要更改的2个地方
字符串最后:./xxxxRpc.proto
和新生成的表名:-table
总结
这里简单介绍了 sql2pb
希望大家在使用go-zero框架时,可以巧妙准确的使用sql2pb指令
加快我们的开发速度