亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 中 DynamoDB 索引鍵的空字符串

Golang 中 DynamoDB 索引鍵的空字符串

Go
慕碼人2483693 2022-10-10 19:31:58
在與 DynamoDB 通信時,我一直在使用 Protobuf 進行對象定義。到目前為止,這些對象看起來像這樣:type Record struct {    state         protoimpl.MessageState    sizeCache     protoimpl.SizeCache    unknownFields protoimpl.UnknownFields    Id               string        `protobuf:"bytes,2,opt,name=id,json=id,proto3" dynamodbav:"id,omitempty" json:"id,omitempty"`    Name             string        `protobuf:"bytes,3,opt,name=name,json=name,proto3" dynamodbav:"name,omitempty" json:"name,omitempty"`    OrgId            string        `protobuf:"bytes,4,opt,name=org_id,json=orgId,proto3" dynamodbav:"org_id,omitempty" json:"org_id,omitempty"`    AccountId        string        `protobuf:"bytes,7,opt,name=account_id,json=accountId,proto3" dynamodbav:"account_id,omitempty" json:"account_id,omitempty"`    Address          string        `protobuf:"bytes,9,opt,name=address,proto3" dynamodbav:"address,omitempty" json:"address,omitempty"`    BillingTitle     string        `protobuf:"bytes,10,opt,name=billing_title,json=billingTitle,proto3" dynamodbav:"billing_title,omitempty" json:"billing_title,omitempty"`}這段代碼不會驚慌,我會看到 DynamoDB 中的值。但是,omitempty從所有標簽中刪除該子句后dynamodbav,我注意到現在失敗并出現以下錯誤:ValidationException: Invalid attribute value type        status code: 400, request id: 6a626232-fcd4-4999-afe4-3df5769ce1b2我想使用默認值而不是前者,NULL: true但我沒有看到任何序列化選項。有沒有辦法在不實現 DynamoDB 封送器接口的情況下做到這一點?
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

經過一番調查,我在這里Marshal找到了該函數的源代碼。據此,我可以設置一個名為的字段來告訴編碼器我希望將空字符串作為字符串發送,而不是作為空屬性發送。但是,如果我設置它,我不能直接使用, 。所以,我復制了它們并寫了我自己的:NullEmptyStringMarshalMarshalMapMarshalList


func MarshalMap(in interface{}) (map[string]*dynamodb.AttributeValue, error) {

    av, err := getEncoder().Encode(in)

    if err != nil || av == nil || av.M == nil {

        return map[string]*dynamodb.AttributeValue{}, err

    }


    return av.M, nil

}


func getEncoder() *dynamodbattribute.Encoder {

    encoder := dynamodbattribute.NewEncoder()

    encoder.NullEmptyString = false

    return encoder

}


查看完整回答
反對 回復 2022-10-10
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號