首页 > 解决方案 > AWS:当我尝试更新 dynamodb 中的项目时,出现以下错误提供的关键元素与架构不匹配

问题描述

当我尝试更新 dynamodb 中的项目时,出现以下错误:

var docClient = new AWS.DynamoDB.DocumentClient();

function updateItem() {
    var table = "Bicycle";

    var params = {
        TableName:table,
        Key:{
            warrantyDate: "2018/10/23",
            warrantyStatus: "Active"
        },
        UpdateExpression: "set warrantyStatus = :r",
        ExpressionAttributeValues:{
            ":r":"Inactive"
        },
        ReturnValues:"UPDATED_NEW"
    };

    docClient.update(params, function(err, data) {
        if (err) {
            alert("Unable to update item");
             alert(err);
        } else {
            alert("UpdateItem succeeded");
        }
    });
}

当我调用这个函数时,我收到了这个异常:

ValidationException:提供的关键元素与架构不匹配

我怎样才能解决这个问题?

标签: amazon-web-servicesamazon-dynamodb

解决方案


问题是您的 KEY 属性值与 dynamodb 表上的主分区键不匹配。

更新项目时,您需要指定映射到 dynamodb 表上的主键的单个键。Key 字段中应该只有一个属性。您正试图找到一个既是warrantyDate又是warrantyStatus的键。确保您指定了映射到您的 dynamodb 配置的正确键。

如果您尝试更新多个项目,则需要使用另一个函数,因为doClient.update()仅更新与表中主索引的匹配的单行。


推荐阅读