Aza*_*aev 2 amazon-web-services nosql amazon-dynamodb
调用 DynamoDB deleteItem API 时,出现The provided key element does not match the schema错误。经过研究,我发现当您没有提供完整的主键(即表有范围键但 API 调用未指定它)时,就会发生此错误。但是,就我而言,该表没有范围键,它只有一个名为 的哈希键pk。
这是我的代码:
const dynamodbDocClient = new AWS.DynamoDB.DocumentClient({ logger: console });
socket.on('my-event', async (payload) => {
await dynamodbDocClient.delete({
TableName: 'MyTable',
Key: { pk: payload.id },
}).promise()
})
Run Code Online (Sandbox Code Playgroud)
有人可以列出可能发生此错误的所有其他情况吗?
在不知道您的数据库架构的情况下很难判断这一点,但一个可能的问题可能是您的主键在 DynamoDB 中定义为数字(例如整数或长整型),但payload.id属于字符串类型(反之亦然)。
您可以通过解析payload.id为 Javascripts 集成Number类型来解决这个问题。
Key: { pk: parseInt(payload.id) },
Run Code Online (Sandbox Code Playgroud)
相反,如果您的主键定义为字符串并且payload.id类型为Number:
// Convert the id to string
Key: { pk: payload.id + '' },
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8052 次 |
| 最近记录: |