【发布时间】:2021-04-24 19:58:17
【问题描述】:
编辑问题:尝试更新我的 map[]interface 字段时收到错误 400。
在使用 UpdateItem 时,我一直在更新 DynamoDB 中的数组对象,特别是在我的数组对象上(在本例中为 Authors 字段)。
&awserr.requestError{awsError:(*awserr.baseError)(0xc000204140), statusCode:400, requestID:"QU2MMAJVDRM0JHJEPOE93VJPSVVV4KQNSO5AEMVJF66Q9ASUAAJG", bytes:[]uint8(nil)}
在使用具有相同结构的 PutItem 时,我没有遇到任何问题。 我不确定我错过了什么,AWS 给出的错误对我来说不是很清楚。
结构:
type Book struct {
Id int `json:":id"`
Title string `json:":title"`
Photo Photo `json:":photo"`
Authors []Author `json:":authors"`
}
type Author struct {
Id int `json:":id"`
Name string `json:":name"`
}
我已经试过了 更新代码:
input := &dynamodb.UpdateItemInput{
TableName: aws.String("books"),
Key: key,
UpdateExpression: aws.String(updateExp),
ExpressionAttributeValues: value,
}
更新表达式:
"SET title = :title, photo = :photo, authors = list_append(authors, :authors)"
我也试过了
authors = :authors
因为我打算每次都替换整个 Authors 值,但我似乎可以完成这项工作。
当我记录我的 ExpressionAttributeValue 时,它看起来像这样
ExpressionAttributeValues: {
:authors: {
L: [{
M: {
id: {
N: "1"
},
name: {
S: "Bob"
}
}
},{
M: {
name: {
S: "Arthur"
},
id: {
N: "2"
}
}
}]
},
:title: {
S: "Jumanji"
},
:description: {
S: "Jungle Book"
},
:photo: {
M: {
original: {
S: "sample.jpg"
}
}
}
}
我已经测试过删除作者字段更新(以 UpdateExpression 根据可用数据调整的方式进行编码)并且所有其他字段更新都可以正常工作,所以我的问题实际上只是更新 []struct 类型。
【问题讨论】:
-
有什么问题?有什么错误吗?它似乎有效但实际上没有更新?还是什么?
-
对不起,如果问题不清楚,我无法更新。尝试更新作为数组映射的作者字段时出现错误 400
-
请edit您的帖子包含完整的报价,大概是在“AWS给出的错误对我来说不是那么清楚”行之后跨度>
标签: go amazon-dynamodb aws-sdk-go