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