【发布时间】:2015-12-02 08:05:45
【问题描述】:
我有一个表,它的属性实际上是一个 JSON 列表。
var myItem = {
name: 'myname',
tasks: [
{ key1: 'value1', key2: 'value2' }
]
}
我像这样将 myItem 放入表中,这似乎工作正常。
var params = {
TableName: 'runs',
Item: myItem
};
dynamodbDoc.put( params, ...
然后我想更新记录以更改“任务”。
var newTasks = [
{ key1: 'newvalue1', key2: 'newvalue2' }
]
所以我设置了这样的 updateItem:
var params = {
TableName: 'runs',
Key: {
name: { S: 'myname' }
},
UpdateExpression: "SET #tasks = :tasks",
ExpressionAttributeNames: {
"#tasks": "tasks"
},
ExpressionAttributeValues: {
":tasks": newTasks
},
ReturnValues: 'ALL_NEW'
}
dynamodb.updateItem( params, ...
给我UnexpectedParameter: Unexpected key '0' found in params.ExpressionAttributeValues[':tasks'] 失败了。
我也试过了
ExpressionAttributeValues: {
":tasks": { M: tasks }
},
还有……
ExpressionAttributeValues: {
":tasks": { L: tasks }
},
这些也不起作用。显然我在这里遗漏了一些东西。
【问题讨论】:
-
你在使用 javascript sdk 吗?
-
@zsimpson 检查this。我需要更新数组中的特定 JSON。很像你的东西。我找不到合适的资源来做到这一点。
标签: amazon-dynamodb