The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
ic3z

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

  •  
  •   ic3z · Jul 14, 2024 via iPhone · 3643 views
    This topic created in 841 days ago, the information mentioned may be changed or developed.
    golang grpc 服务用来接受客户端提交数据。
    数据类型比较多。
    通过 gorm 保存数据。
    pb 类型要单独转换为 gorm model 么?
    14 replies  •  2024-07-15 09:59:33 +08:00
    ilylx2008
    ilylx2008
    Jul 14, 2024
    1
    需要
    mogita
    mogita
    Jul 14, 2024 via iPhone
    2
    dto 和 dao 各一份(二者异构大有可能)
    zjh7890
    zjh7890
    Jul 14, 2024
    3
    可以利用 IDEA 插件让 ChatGPT 帮你生成样板代码
    smalnote
    smalnote
    Jul 14, 2024❤️1
    4
    probobuf 结构自动生成的,要加 gorm model 的 tag 要改 proto 文件重新生成,而且同一个字段在 protobuf 中的类型跟在 gorm model 的类型可能不一样(int, int32, int64, uint, etc),分开定义后期迭代省事,除非预期不用改。
    ninjashixuan
    ninjashixuan
    Jul 14, 2024
    5
    就算不是微服务也是两套吧
    dobelee
    dobelee
    Jul 14, 2024
    6
    手撸一个 pb ,让 ChatGPT 自动生成 DDL 、GORM.
    caicaiwoshishui
    caicaiwoshishui
    Jul 14, 2024
    7
    肯定两套呀,po 的数据类型不一定都会在 pb 展示呀
    zzhaolei
    zzhaolei
    Jul 14, 2024❤️1
    8
    需要两套。可以考虑 copier 库,可以根据字段名,复制两个结构。
    wenyuhe
    wenyuhe
    Jul 14, 2024
    9
    两者异构很正常, 但是枚举可以定义在 pb 里。该关联的关联,该分开的分开
    wenyuhe
    wenyuhe
    Jul 14, 2024
    10
    @wenyuhe pb 里定义个 entity 就可以了
    gvison
    gvison
    Jul 15, 2024❤️1
    11
    使用工具连接数据库之后就可以生成 pb 和 gorm 两套对应的代码,示例 https://go-sponge.com/ui/micro-service
    ryan961
    ryan961
    Jul 15, 2024❤️1
    12
    @zzhaolei #8 这个是使用 reflect 实现的,接口中使用性能堪忧。推荐使用 https://github.com/jmattheis/goverter 脚本预生成转换代码,好用、性能高
    zzhaolei
    zzhaolei
    Jul 15, 2024
    13
    @ryalu 我使用的场景就是 dao 到 dto ,bench 的速度还行,比 mapstructure 快多了。你说的这个也不错,就是有一点麻烦。
    loux
    loux
    Jul 15, 2024
    14
    pb 可以用自定义结构体类型 google.protobuf.Struct ,序列化下就行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4957 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 118ms · UTC 01:16 · PVG 09:16 · LAX 17:16 · JFK 20:16
    ♥ Do have faith in what you're doing.