V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ic3z
V2EX  ›  Go 编程语言

grpc 服务程序, pb 类型和 gorm model 要定义两套么?

  •  
  •   ic3z · 55 天前 via iPhone · 2042 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。
    golang grpc 服务用来接受客户端提交数据。
    数据类型比较多。
    通过 gorm 保存数据。
    pb 类型要单独转换为 gorm model 么?
    14 条回复    2024-07-15 09:59:33 +08:00
    ilylx2008
        1
    ilylx2008  
       55 天前
    需要
    ck65
        2
    ck65  
       55 天前 via iPhone
    dto 和 dao 各一份(二者异构大有可能)
    zjh7890
        3
    zjh7890  
       55 天前
    可以利用 IDEA 插件让 ChatGPT 帮你生成样板代码
    smalnote
        4
    smalnote  
       55 天前   ❤️ 1
    probobuf 结构自动生成的,要加 gorm model 的 tag 要改 proto 文件重新生成,而且同一个字段在 protobuf 中的类型跟在 gorm model 的类型可能不一样(int, int32, int64, uint, etc),分开定义后期迭代省事,除非预期不用改。
    ninjashixuan
        5
    ninjashixuan  
       55 天前
    就算不是微服务也是两套吧
    dobelee
        6
    dobelee  
       55 天前
    手撸一个 pb ,让 ChatGPT 自动生成 DDL 、GORM.
    caicaiwoshishui
        7
    caicaiwoshishui  
       55 天前
    肯定两套呀,po 的数据类型不一定都会在 pb 展示呀
    zzhaolei
        8
    zzhaolei  
       55 天前   ❤️ 1
    需要两套。可以考虑 copier 库,可以根据字段名,复制两个结构。
    wenyuhe
        9
    wenyuhe  
       55 天前
    两者异构很正常, 但是枚举可以定义在 pb 里。该关联的关联,该分开的分开
    wenyuhe
        10
    wenyuhe  
       55 天前
    @wenyuhe pb 里定义个 entity 就可以了
    gvison
        11
    gvison  
       54 天前   ❤️ 1
    使用工具连接数据库之后就可以生成 pb 和 gorm 两套对应的代码,示例 https://go-sponge.com/ui/micro-service
    ryalu
        12
    ryalu  
       54 天前   ❤️ 1
    @zzhaolei #8 这个是使用 reflect 实现的,接口中使用性能堪忧。推荐使用 https://github.com/jmattheis/goverter 脚本预生成转换代码,好用、性能高
    zzhaolei
        13
    zzhaolei  
       54 天前
    @ryalu 我使用的场景就是 dao 到 dto ,bench 的速度还行,比 mapstructure 快多了。你说的这个也不错,就是有一点麻烦。
    loux
        14
    loux  
       54 天前
    pb 可以用自定义结构体类型 google.protobuf.Struct ,序列化下就行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1161 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:51 · PVG 07:51 · LAX 16:51 · JFK 19:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.