protoc-gen-fieldmask
protoc-gen-fieldmask copied to clipboard
只能在当前文件中查找,同package但是不同文件的message无法定位
protoc-gen-fieldmask只会在当前文件中查找,同package但是不同文件的message就找不到了。
举个例子: grpc.proto
message BatchGetUserRequest {
string user_id = 1;
google.protobuf.FieldMask user_field_mask = 2 [
(fieldmask.option.Option).in = {gen: false},
(fieldmask.option.Option).out = {
gen: true,
message: "BatchGetUserResponse",
}
];
}
message BatchGetUserResponse {
repeated User users = 1;
}
types.proto
message User {
string id = 1;
string name = 2;
}
一开始直接指定的BatchGetUserResponse,但是repeated只能识别users这个字段,无法识别User里的每个字段。
后来我改成message: "User"
,但是找不到User的定义。
再后来我改成message: "user.User"
,这回找到User定义了,但是生成的go代码会多一个当前package的import,形成循环依赖。
抱歉,目前这部分还是不完善。
当时想过要不要对于嵌套类型生成 mask 相关的代码:可能存在深层次甚至循环问题,就没有识别嵌套类型(User)的字段
目前好像是必须指定为同名的Response,不能直接指定为真正想要mask的那个message,只能想办法识别嵌套类型。
改成直接指定真正想要mask的message是不是好点?比如对于BatchGetUserRequest,我真正想要mask的时User而不是BatchGetUserResponse?