首页 > 解决方案 > 结构上定义的 Golang gRPC 数据库序列化密钥格式

问题描述

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

有没有办法设置额外的序列化密钥(如下所示),或者是否有另一种特定于 golang 的方式来告诉数据库驱动程序(sqlx在顶部database/sqljson应该使用密钥格式?

一些示例 - 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在本示例中),但感觉不一致并增加了很多复杂性。

标签: goserializationstructgrpc

解决方案


我认为目前没有内置的方法可以做到这一点。但是,您可能有兴趣关注此线程:https ://github.com/golang/protobuf/issues/52

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


推荐阅读