使用react更新Dynamo数据库表



我有一个dynamodb表,列为id(分区键)和日期。我试图更新id=2的日期,但我得到以下错误响应:

message: "The provided key element does not match the schema"
__type: "com.amazon.coral.validate#ValidationException"
下面是我的代码:
import * as AWS from 'aws-sdk'
AWS.config.update({
region: 'us-east-1',
accessKeyId: 'MY_ACCESS_KEY',
secretAccessKey: 'MY_SECRET_KEY'
});
const docClient = new AWS.DynamoDB.DocumentClient()
export const updateData = (tableName : any, id : any, date : any) => {
let params = {
TableName: tableName,
Key:{
"id": id
},
UpdateExpression: `set date = :date`,
ExpressionAttributeValues: {":date": date},
};
docClient.update(params, function(err, data) {
if (!err) {
console.log(data);
}else{
console.log(err)
}
})
}

我这样调用函数:

updateData("mytable","2","2023-01-10")
有谁确认我在这里做错了什么吗?

date是DynamoDB中的保留关键字

您需要使用ExpressionAttributeNames参数:

let params = {
TableName: tableName,
Key:{
"id": id
},
UpdateExpression: `set #date = :date`,
ExpressionAttributeValues: {":date": date},
ExpressionAttributeNames: {"#date":"date"}
};

对于例外,请确保您的表分区键为id,并且如果类型为String,并且表没有排序键,否则您还需要添加排序键。

最新更新