go - 结构上定义的 Golang gRPC 数据库序列化密钥格式
问题描述
我想将 gRPC 编译器直接生成的 go 结构用于数据库事务,但问题是json
gRPC 仅设置了序列化字段。
有没有办法设置额外的序列化密钥(如下所示),或者是否有另一种特定于 golang 的方式来告诉数据库驱动程序(sqlx
在顶部database/sql
)json
应该使用密钥格式?
一些示例 - gRPC 编译器创建以下结构:
type HelloWorld struct {
TraceId string `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
...
我想拥有的:
type HelloWorld struct {
TraceId string `db:"trace_id" protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
...
一个临时的解决方法是编写使用别名的 sql 查询(traceid
而不是trace_id
在本示例中),但感觉不一致并增加了很多复杂性。
解决方案
我认为目前没有内置的方法可以做到这一点。但是,您可能有兴趣关注此线程:https ://github.com/golang/protobuf/issues/52
除此之外,我认为您可以为数据库访问创建另一个结构并使映射显式,这可能更具可读性。
推荐阅读
- javascript - Nodejs alpine Docker puppeteer 无法启动
- grafana - 使用 Cloudwatch 数据源在 Grafana 仪表板中创建警报
- zapier - 如何将 RoamResearch 连接到 Zapier?
- angular - 反应中的mat-button-toggle组使其他控件消失?
- r - RStudio 无法在 Mac 上启动
- python - 如何从数组中删除计数
- makefile - 如何从不同的makefile调用目标?
- ionic-framework - 离子框架侧菜单问题 - 反应
- flutter - 如何在没有streambuilder的情况下检查firestore快照的连接状态?
- android - 在 android Studio 中找不到模块