如何从 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