【发布时间】:2018-11-15 07:17:08
【问题描述】:
您好,有一个 proto 文件如下:
enum Type
{
A = 0;
B = 1;
C = 2;
}
message Message
{
User to = 1;
User from = 2;
Type type = 3;
}
我使用 protoc 编译器将其转换为 javascript 实用程序类。使用这个生成的 javascript 文件,我在我的应用程序中设置 Message 对象,如下所示:
const message = new Main.Message()
message.setTo(this.user1) // saved user
message.setFrom(this.user3) // saved user
message.setType(0) // trying to set type to A
const buffer = message.serializeBinary()
socket.send(buffer)
我面临的问题是消息对象to 和from 字段都得到正确更新,但type 仍然是null!我无法找到解决方案。
这是因为在Message proto 中,预期的类型是 Enum 吗?但它是 javascript 是不可能的。在创建用于调度的 protobuf 时如何设置预期的枚举值?
注意:
我注意到,这个问题只有在我尝试设置
zero时才会发生 枚举类型的值!
【问题讨论】:
-
哪个protobuf版本(proto2,proto3)?
-
@jannis 这是 proto3
-
只是一个猜测(从未使用过protobuf),但你不能使用枚举本身,比如
message.setType(Main.Type.A)? -
@MartinAdámek 没关系!实际上,您以两种方式传递相同的值,即一个数字。
标签: javascript protocol-buffers