gpt4 book ai didi

go - 具有许多属性的 UpdateItem

转载 作者:行者123 更新时间:2023-12-02 11:25:11 25 4
gpt4 key购买 nike

我正在尝试更新具有许多属性(超过 100 个)的项目。我可以看到有两种方法可以更新此项目。
PutItem :PutItem 可以更新项目,根据我的理解,我需要为每个请求发送所有 100 个属性,因为我使用 struct 对请求数据进行编码和解码。如果我跳过任何字段,默认值将插入到表中。
更新项目输入 :我们可以使用 UpdateItemInput 更新表,如下所示 -

    svc := dynamodb.New(session.New())
input := &dynamodb.UpdateItemInput{
ExpressionAttributeNames: map[string]*string{
"#AT": aws.String("AlbumTitle"),
"#Y": aws.String("Year"),
},
ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
":t": {
S: aws.String("Louder Than Ever"),
},
":y": {
N: aws.String("2015"),
},
},
Key: map[string]*dynamodb.AttributeValue{
"Artist": {
S: aws.String("Acme Band"),
},
"SongTitle": {
S: aws.String("Happy Day"),
},
},
ReturnValues: aws.String("ALL_NEW"),
TableName: aws.String("Music"),
UpdateExpression: aws.String("SET #Y = :y, #AT = :t"),
}

result, err := svc.UpdateItem(input)
这里需要写 表达式属性名称 对于许多属性,如果要更新的属性是动态的,我应该如何处理。
我不确定哪种是处理更新的有效方法。请建议哪种方法更好,或者还有其他方法可以处理这种情况。

最佳答案

你是对的 PutItem 替换 任何具有相同 key 的现有项目,因此如果您只想 合并 一堆新的属性值变成一个现有的item,需要使用UpdateItem .
正如您所说,一种选择确实是使用 UpdateExpression句法。您需要创建一个类似 SET #a1 = :a1, SET #a2 = :a2, ... 的字符串。并且所有这些都设置了 a1 等等,但这并不是一个很难的编程练习。
另一种选择是代替 UpdateExpression ,使用较旧的 AttributeUpdates语法,带有一堆 PUT操作。这可能稍微容易一些(您只构建一个 JSON 列表,而不是一个表达式加两个列表),但两者都需要一些简单的编程。

关于go - 具有许多属性的 UpdateItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64366670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com