定义proto中的所有字段?它可以忽略未定义的字段吗?

时间:2017-04-11 19:08:25

标签: javascript node.js protocol-buffers grpc

我正在关注http://www.grpc.io/docs/tutorials/basic/node.html#try-it-out

中的教程

我想测试grpc如何处理协议缓冲区中的未定义字段,因此我修改了route_guide_server.js第74行,以返回另一个字段test

feature = {
    name: name,
    location: point,
    test: 'test'
  };
  return feature;
}

然后我在客户端遇到了这个错误 { Error: .routeguide.Feature#test is not a field: undefined

这是预期的行为吗?根据我对protocol buffer doc的理解,未知字段应该简单地不是序列化而不是抛出错误?

1 个答案:

答案 0 :(得分:0)

Protobuf仅在反序列化时删除字段,而不是序列化。如果您使客户端和服务器使用相同proto的略有不同版本,您可以更清楚地看到差异。客户端应该包含测试字段,但服务器不应该包含。