par*_*ola 3 javascript protocol-buffers node.js protoc
如何获取与协议缓冲区字段相关的选项?
假设我有一个带有自定义选项的字段,例如:
syntax = "proto3";
package main;
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
bool required = 7000;
}
message Person {
string name = 1 [(required) = true];
}
Run Code Online (Sandbox Code Playgroud)
生成了 js 文件protoc
syntax = "proto3";
package main;
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
bool required = 7000;
}
message Person {
string name = 1 [(required) = true];
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了如何从此处检索其他语言的选项,但似乎可以在 Javascript 中进行任何操作。
任何帮助将不胜感激!
小智 5
不幸的是,这不受支持。
其他语言在生成的代码中嵌入了 proto 文件的“描述符”。描述符包含有关消息、其字段以及自定义选项的信息,全部采用二进制 protobuf 格式。参见描述符.proto
生成读取扩展的代码。如果您有 FieldDescriptor,您可以读取您的 FieldOption 扩展。但是 Javascript 生成的代码中没有这个描述符。
有一个可能的解决方法:您可以使用 protoc 为 .proto 文件转储 FileDescriptorSet(请参阅--descriptor_set_out
选项)。您可以使用 Javascript(来自 google-protobuf 的 proto.google.protobuf.FileDescriptorSet)读取此二进制消息,导航到您的消息、相关字段,然后读取您的扩展数据以获取自定义选项值。
归档时间: |
|
查看次数: |
1554 次 |
最近记录: |