当我在更新 dynamodb 表的结构中更新空字符串值时,我被卡住了。
目前我有这个结构
type Client struct {
ClientID *string `json:"client_key,omitempty"`
Name *string `json:"client_name,omitempty"`
Address *string `json:"address,omitempty"`
Country *string `json:"country,omitempty"`
City *string `json:"city,omitempty"`
State *string `json:"state,omitempty"`
PostCode *string `json:"post_code,omitempty"`
CreatedAt *time.Time `json:"created_at,omitempty"`
}
更新项目时的这段代码
keyAttr, err := dynamodbattribute.MarshalMap(key)
if err != nil {
return nil, err
}
valAttr, err := dynamodbattribute.MarshalMap(attributes)
if err != nil {
return nil, err
}
keyAttrwill be used for the KeyfieldvalAttr将用于ExpressionAttributeValues现场。请注意,为了节省空间,我没有包括完整的更新字段功能。但如果你要求,我会这样做。
目前该函数运行良好,除非我用空字符串更新了其中一个字段。例如client.Address = aws.String("")。虽然我可以使用 dynamodb 将我的空字符串转换为null,但由于标签,我似乎无法找到更新它的方法omitempty。
我需要 omitempty 标签来忽略所有nil值。但是,我刚刚研究过该omitempty标记还省略了空字符串值。目前我必须像这样在我的函数中创建一个结构。
type client struct {
Name *string `json:"client_name"`
Address *string `json:"address"`
Country *string `json:"country"`
City *string `json:"city"`
State *string `json:"state"`
PostCode *string `json:"post_code"`
}
但我不喜欢重复事情。所以,问题是:有没有更好的方法来做到这一点?你们如何将结构与dynamodb一起使用?
烙印99
相关分类