如何获取与 Protocol Buffer 字段关联的选项?
假设我有一个带有自定义选项的字段,例如:
syntax = "proto3";
package main;
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
bool required = 7000;
}
message Person {
string name = 1 [(required) = true];
}
使用protoc
生成js文件
protoc -I . *.proto --js_out=import_style=commonjs,binary:js
我已阅读 here 如何检索其他语言的选项,但似乎可以在 Javascript 中工作。
任何帮助将不胜感激!
最佳答案
不幸的是,这不受支持。
其他语言在生成的代码中嵌入了 proto 文件的“描述符”。描述符包含有关消息、其字段以及自定义选项的信息,全部采用二进制 protobuf 格式。请参阅descriptor.proto
生成读取扩展的代码。如果您有 FieldDescriptor,您可以读取您的 FieldOption 扩展。但是 Javascript 生成的代码中没有这个描述符。
有一个可能的解决方法:您可以使用 protoc 转储 .proto 文件的 FileDescriptorSet(请参阅 --descriptor_set_out
选项)。您可以使用 Javascript(来自 google-protobuf 的 proto.google.protobuf.FileDescriptorSet)读取此二进制消息,导航到您的消息、相关字段,然后读取您的扩展程序数据以获取自定义选项值。
关于javascript - Javascript/NodeJS 中的 Protocol Buffer 字段选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65282231/