Dynamodb批处理给出验证错误

时间:2017-02-13 03:54:18

标签: amazon-dynamodb

我的DynamoDb表定义为主分区和排序键

表名用户 主分区键phone_num(String) 主排序键国家(字符串)

我正在尝试使用以下参数设置

在此表上执行批处理
var dynamoQueryParams = {
    RequestItems: {
        'user': {
            Keys: [
                {"phone_num": {"S":"+14085551212"}, "Country": {"S":"USA"}},
                {"phone_num": {"S":"+14085551313"}, "Country": {"S":"USA"}}
            ],
            AttributesToGet: [
                'phone_num', 'Country', 'createdAt'
            ],
            ConsistentRead: false
        }
    }
}

当我使用此参数设置运行我的代码时,我收到错误“ValidationException:提供的关键元素与架构不匹配”。

我不太清楚我在这里做错了什么。我尝试了各种组合的东西,有和没有引号,有和没有国家的关键,但我一直得到同样的错误,不知道我需要做什么。

感谢我在这里可能缺少的任何指示。

谢谢, 桑杰。

2 个答案:

答案 0 :(得分:0)

只需在params上提供没有数据类型“S”的值。 DynamoDB会自动将其视为String。

var params = {
    "RequestItems" : {
        "user" : {
            "Keys" : [ {
                "phone_num" : "+14085551212",
                "Country" : "USA"
            },
            {
                "phone_num" : "+14085551313",
                "Country" : "USA"
            }
             ]
        }
    }

};

答案 1 :(得分:0)

您是否尝试过不使用引号?像这样:

Keys: [
{"phone_num": {S:"+14085551212"}, "Country": {S:"USA"}},
{"phone_num": {S:"+14085551313"}, "Country": {S:"USA"}}
],

如果键是String类型的,我可以保证它会起作用。