go语言 grpc 怎么结合 gorm 使用

发布于 2022-09-06 10:13:15 字数 796 浏览 52 评论 0

项目当中使用多语言开发,所以使用 grpc 作为跨语言调用的工具,但是使用 go 语言时却不知怎么更好的结合 gorm。

主要问题是 proto 生成的 go 结构不适用于 gorm 的 model(proto 生成的结构不支持自定义标签以及 time.Time 类型),而且我认为将网络层数据结构用于持久层也不是一个好主意,因此提出此问是想找到一个合适的方案。

目前我的思路如下:

  1. 有点啰嗦的写法,在项目中和 proto 中声明两次结构,写一个转换方法,用来转换这两种结构,因为才疏学浅,只能一个字段一个字段赋值,尤其是遇到多条查询,还需要写个循环去转换,如果是这种思路,有没有更高效的转换方式?
  2. 不使用 gorm,自己写 sql
  3. 用一个支持 json 数据库来保存

目前搜集到的资料:

这个 问题 问到如何让 proto 支持 go 自定义标签,里面提到了一个库可以支持,不过我还是认为局限性很大,就算 proto 支持了自定义标签,但还是不支持自定义表名,事件等等,所以这个方案 pass

这个 issues 讨论的就是让 proto 支持自定义标签,被明确否定不会被支持。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浊酒尽余欢 2022-09-13 10:13:15

第一种方法是最好的也是实践中最实用的。
proto写的多的话,你会发现,proto中 message数据结构定义的会越来越多,所以,针对同一类型的request message,尽量可以定义的大而全,需要哪些字段就给哪些字段赋值,不需要不赋值即可,不赋值的话传输没有任何消费。
还有就是 什么层做什么事情,不要各种耦合,会很乱的。
不要觉得第一种会啰嗦,其实一点都不浪费也不臃肿的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文