starwing / lua-protobuf

A Lua module to work with Google protobuf
MIT License
1.73k stars 387 forks source link

编码时lua table表没有消息对应的字段时如何让他报错 #209

Closed tkzcfc closed 2 years ago

tkzcfc commented 2 years ago

我是用的是proto3,lua项目有很多功能是重用的以前老项目的 但是服务器有些协议字段更改了 如何让pb在编码时强制要求所有字段

starwing commented 2 years ago

不支持,也不会支持这个功能。

tkzcfc commented 2 years ago

能从数据库取到消息的字段名称吗 在debug的时候在Lua判断下也好

tkzcfc commented 2 years ago

可以了 pb.fields 可以读取消息字段信息

awakezhao commented 4 months ago

lua表中有pb没有的字段,编码时这些字段回被丢弃吗?这个时候能给一个告警吗?

hanxi commented 4 months ago

你可能是需要一个 schema 检测工具,类似下面这个,线下环境打开检测,线上环境关闭检测。不过没做到静态代码检测,只做到了运行时检测。

https://github.com/hanxi/lua-dirty-mongo

awakezhao commented 3 months ago

如何用pb.fields递归的遍历pb里面的字段?

hanxi commented 3 months ago

递归还得考虑已经遍历过的字段,写一个递归函数,加个已经遍历过的表作为参数传进去,我是直接用 pb.types 遍历所有类型的,就不需要递归了。