go data_error ai_generated true

proto:(field mask):无效路径 "user..name"

proto: (field mask): invalid path "user..name"

ID: go/proto-field-mask-path-invalid

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
0证据数
2024-10-04首次发现

版本兼容性

版本状态引入弃用备注
google.golang.org/protobuf v1.31+ active — — —

根因分析

fieldmaskpb 验证拒绝了包含空段或消息描述符中不存在的字段名的路径。

English

fieldmaskpb validation rejected a path with empty segments or names not present in the message descriptor.

generic

解决方案

  1. 92% 成功率
    fm := &fieldmaskpb.FieldMask{Paths: []string{"user.name", "user.email"}}
    fm.Normalize()
    if !fm.IsValid(msg) {
        return nil, status.Error(codes.InvalidArgument, "invalid field mask")
    }
  2. 85% 成功率
    md := msg.ProtoReflect().Descriptor()
    for _, p := range fm.Paths {
        if !fieldMaskPathExists(md, p) {
            return nil, fmt.Errorf("unknown field: %s", p)
        }
    }

无效尝试

常见但无效的做法:

  1. 80% 失败

    Silently changes semantics; the Update RPC will apply the wrong field mask.

  2. 75% 失败

    Loses protobuf descriptor validation and interop with other gRPC clients.