【发布时间】:2021-04-30 22:35:46
【问题描述】:
我希望在 dynamoDB javascript SDK 中使用文档客户端的更新功能部分。我的 dynamoDB 表有一个主分区键“PK”(字符串)和一个主排序键“SK”(字符串)。我的理解是这意味着我的项目需要用它们的复合主键来标识,它是“PK”和“SK”的某种组合
我正在使用单表设计,因此示例项目看起来像
PK“CONTEST#2021”
SK:“POST#5673”
作者:“USER#2759”
文本:“Lorem ipsum”
评论编号:9
我的代码逻辑是这样的
const AWS = require('aws-sdk');
const dynamo = new AWS.DynamoDB.DocumentClient();
exports.addComment = async (event, context, callback) => {
const params = {
TableName: 'App',
Key: {
"PK": event.PK,
"SK": event.SK
},
UpdateExpression: 'set commentNumber = :number',
ExpressionAttributeValues: {
':number': event.updatedCommentCount
}
}
try {
var res = await dynamo.update(params).promise()
// handleSuccess(res)
} catch(err) {
// handleFail(err)
}
return 'success'
};
当我尝试上面的代码时,我收到一条错误消息the provided key element does not match the schema
我知道我的参数中的 Key 键有问题,但文档没有帮助。它表明可以使用复合键进行更新,并且似乎表明 Key 的值可以是具有两个键的对象,但这不起作用。如何更新我的参数以使用更新功能?
【问题讨论】:
-
此时我会仔细检查
event.PK和event.SK是字符串。我还听说过分区键和/或排序键配置错误、名称不匹配等情况。您可能需要仔细检查 AWS 控制台中 DynamoDB 表的概览选项卡。 -
您找到解决方案了吗?我有同样的问题。
-
很遗憾没有。我最终只是通过完全替换该行来解决这个问题
标签: javascript amazon-dynamodb