【问题标题】:Dynamodb batchget giving validation errorDynamodb batchget 给出验证错误
【发布时间】:2019-04-13 15:14:40
【问题描述】:

我的 DynamoDb 表是使用 Primary Partition 和 Sort 键定义的

表名用户 主分区键 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:提供的关键元素与架构不匹配”。

我不太确定我在这里做错了什么。我尝试了各种组合,有无引号,有无国家键,但我一直收到同样的错误,不知道我需要做什么。

感谢我在这里可能遗漏的任何指针。

谢谢, 桑杰。

【问题讨论】:

  • 您能否提供一个示例,说明您如何尝试调用 batchget?

标签: amazon-dynamodb


【解决方案1】:

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

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

};

【讨论】:

  • 谢谢@notionquest。文档似乎表明我需要“S”。把它们拿出来工作。谢谢。
【解决方案2】:

你试过不使用引号吗?像这样:

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

如果键是字符串类型,我可以向你保证它会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多