标签: proto3

Proto3 for Go 中的可选支持

使用 Go 时,proto3 是否支持可选功能?我尝试过这个:

protoc person.proto --go_out=. --experimental_allow_proto3_optional
Run Code Online (Sandbox Code Playgroud)

但出现这个错误

person.proto:是一个包含可选字段的 proto3 文件,但代码生成器 protoc-gen-go 尚未更新以支持 proto3 中的可选字段。请要求此代码生成器的所有者支持 proto3 可选。--go_out:

那么proto3(Go)不支持可选关键字?

go protocol-buffers proto proto3

4
推荐指数
1
解决办法
6096
查看次数

确定在C#中设置了哪个'oneof'proto3字段

对于以下协议缓冲区消息(proto3),如何确定设置了哪种类型?似乎没有像生成的C++版本那样的"has_reply"方法.

message Event {
  oneof type {
    Connection connection = 1;
    StatusReply reply = 2;
    Error error = 3;
    End end = 4;
    Empty empty = 5;
  };
}
Run Code Online (Sandbox Code Playgroud)

c# protocol-buffers proto3

2
推荐指数
1
解决办法
6481
查看次数

为什么 proto 缓冲区没有日期数据类型?

我正在使用节点,我很好奇为什么 proto 缓冲区没有日期数据类型?

我正在使用 sequelizejs ORM,我定义了一个日期字段:

tranTime: DataTypes.DATE
Run Code Online (Sandbox Code Playgroud)

MYSQL 数据库保存为 DateTime。

我应该使用哪种数据类型?有人在 GRPC 中使用 datetime 吗?

protocol-buffers node.js grpc proto3

1
推荐指数
1
解决办法
1782
查看次数

解组具有更改的嵌入类型的消息时出现未知字段错误

给定一个这样的原型:

message Request {
    uint64 account_id = 1;
    message Foo{
        uint64 foo_id = 1;
    }
    repeated Foo foos = 2;

Run Code Online (Sandbox Code Playgroud)

当我添加一个名为的字段时bar_id

message Request {
    uint64 account_id = 1;
    message Foo{
        uint64 foo_id = 1;
        uint64 bar_id = 2;
    }
    repeated Foo foos = 2;
Run Code Online (Sandbox Code Playgroud)

client使用旧的via反序列化时出现错误proto.UnmarshalText(msg, request)。错误是unknown field name "bar_id" in serviceA.Request_Foo

我知道 proto-3 中的处理方式发生了很多变化unknown field,但这不是预期的,因为它似乎违反了前向兼容性(新服务器向旧客户端发送请求)。这与使用嵌入类型有关吗?在不强制客户端更新的情况下更新服务器的最佳方法是什么?

go protocol-buffers proto3

1
推荐指数
1
解决办法
3618
查看次数

标签 统计

proto3 ×4

protocol-buffers ×4

go ×2

c# ×1

grpc ×1

node.js ×1

proto ×1