如何从 protobuf.js 生成的代码中读取自定义选项的值?
How to read value of custom options from protobuf.js generated code?
类似于示例:https://developers.google.com/protocol-buffers/docs/proto#extensions
假设我有一个这样的原型:
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
string search_key = 7000;
}
message Person {
string name = 1 [(search_key) = "searchIndex.firstName"];
}
然后我使用 protobufjs-cli 生成一个静态模块:
pbjs -t static-module -w commonjs -o compiled.js test.proto
然后如何使用生成的模块读取 javascript 中的描述符?
如评论中所述,这需要访问原始 .proto 文件或以下文件的输出:
pbjs -t proto3 -o compiled.proto myfile.proto
但是一旦我知道了,这只是一个问题:
import * as protobuf from 'protobufjs';
const root = protobuf.loadSync('test.proto')
const Person = root.lookupType('main.Person')
console.log(Person.fields.name.options!['(search_key)'])
// logs: searchIndex.firstName
类似于示例:https://developers.google.com/protocol-buffers/docs/proto#extensions
假设我有一个这样的原型:
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
string search_key = 7000;
}
message Person {
string name = 1 [(search_key) = "searchIndex.firstName"];
}
然后我使用 protobufjs-cli 生成一个静态模块:
pbjs -t static-module -w commonjs -o compiled.js test.proto
然后如何使用生成的模块读取 javascript 中的描述符?
如评论中所述,这需要访问原始 .proto 文件或以下文件的输出:
pbjs -t proto3 -o compiled.proto myfile.proto
但是一旦我知道了,这只是一个问题:
import * as protobuf from 'protobufjs';
const root = protobuf.loadSync('test.proto')
const Person = root.lookupType('main.Person')
console.log(Person.fields.name.options!['(search_key)'])
// logs: searchIndex.firstName