Node.js 如何让protobuf.js输出枚举字符串而不是整数

Node.js 如何让protobuf.js输出枚举字符串而不是整数,node.js,protocol-buffers,protobuf.js,Node.js,Protocol Buffers,Protobuf.js,我正在使用Node.js 4.4.5的最新版本 我目前很难让protobuf.js输出枚举的字符串定义,而不是整数。我尝试了几个建议,但没有一个有效: 我想这是因为第一个版本的protobuf.js中的API发生了变化。对于第二个,我可以部分使用建议的解决方案,但是如果消息嵌套在其他消息中,那么构建器似乎会退回到使用整数值,尽管字符串值已经显式设置 理想情况下,我希望覆盖用于生成枚举值的函数,但我很难用调试器找到正确的函数。还是有更好的方法来实现深度嵌套对象的这一点?从protoc生成的

我正在使用Node.js 4.4.5的最新版本

我目前很难让
protobuf.js
输出枚举的字符串定义,而不是整数。我尝试了几个建议,但没有一个有效:

我想这是因为第一个版本的
protobuf.js
中的API发生了变化。对于第二个,我可以部分使用建议的解决方案,但是如果消息嵌套在其他消息中,那么构建器似乎会退回到使用整数值,尽管字符串值已经显式设置


理想情况下,我希望覆盖用于生成枚举值的函数,但我很难用调试器找到正确的函数。还是有更好的方法来实现深度嵌套对象的这一点?

protoc
生成的JS代码只有一个方向的映射,例如

 proto.foo.Bar.Myenum = {
  HEY: 0,
  HO: 1
};
这样做的理由是,您必须在自己的JS代码中反向查找。有很多简单的解决方案。我在I.e

通用反向映射器功能…

 export function getKey(map, val) {
  return Object.keys(map).find(key => map[key] === val);
}
import { Bar } from "js/proto/bar_pb";

expect(getKey(proto.foo.Bar.Myenum, 0)).toEqual("HEY");
expect(getKey(proto.foo.Bar.Myenum, 1)).toEqual("HO");
expect(getKey(proto.foo.Bar.Myenum, 99)).toBeUndefined();
UT…

 export function getKey(map, val) {
  return Object.keys(map).find(key => map[key] === val);
}
import { Bar } from "js/proto/bar_pb";

expect(getKey(proto.foo.Bar.Myenum, 0)).toEqual("HEY");
expect(getKey(proto.foo.Bar.Myenum, 1)).toEqual("HO");
expect(getKey(proto.foo.Bar.Myenum, 99)).toBeUndefined();

请提供要编码的.proto文件和测试数据的示例。