在结构上定义的Golang gRPC数据库序列化密钥格式



我想使用gRPC编译器直接为数据库事务生成的go结构,但问题是gRPC只设置了json序列化字段。

有没有办法设置额外的序列化密钥(如下所示(,或者有没有其他特定于golang的方法来告诉数据库驱动程序(database/sql之上的sqlx(应该使用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

除此之外,我认为您可以创建另一个用于数据库访问的结构,并使映射显式,这可能更具可读性。

最新更新