我将以下对象保存到Dynamo DB中。
const obj = {
data:{
src:"s3://some_bucket_name/folder/foo.html",
dest:"s3://some_bucket_name/folder/bar.pdf"
},
op: "someFunc",
status: "not started"
}
这有效,我的数据被保存在DynamoDB中。 但是,我想在另一个地方更新数据的状态,并将其更改为已启动。
这是我用于更新状态的代码,但是它不起作用。 它说“在params.Key [status]中发现了意外的密钥”
const params = {
TableName: 'tableName',
Key: {
"status": record.dynamodb.Keys.Document.S
},
UpdateExpression: "SET started = :started",
ExpressionAttributeValues: {
":started": "started"
},
ReturnValues: "UPDATED_NEW"
}
db.updateItem(params).promise()
.then(data => console.log(data, 'updated data data'))
.catch(err => console.log(err, 'err updating item'))
我在SO和在线上检查了其他示例,但是我无法使其正常运行,有人可以指出我做错了什么吗?
答案 0 :(得分:1)
Key
应该引用表的主键属性。我不相信status
字段是表的主键。
status
字段属于UpdateExpression
,例如
UpdateExpression: "SET status = :started",