使用Lambda(node.js)的DynamoDB查询:不支持查询键条件

Chr*_*ris 7 amazon-dynamodb aws-lambda

我尝试从Lambda函数查询我的dynamoDB.我的表使用"id"作为哈希键.我在下面尝试了两个版本并收到了相应的错误消息.我究竟做错了什么?

  var params = {
        TableName : "addresses",
        KeyConditionExpression: "id = :id AND city = :city",
        ExpressionAttributeValues: {
            ":id": "Austria",
            ":city": "Salzburg"
        }
    };
Run Code Online (Sandbox Code Playgroud)

无法查询.错误:{"message":"不支持查询密钥条件",...}

var params = {
    TableName : "addresses",
    KeyConditionExpression: "city = :city",
    ExpressionAttributeValues: {
        ":city": "Salzburg"
    }
};
Run Code Online (Sandbox Code Playgroud)

无法查询.错误:{"message":"查询条件错过了关键架构元素:id",...}

编辑:

我现在添加了二级索引,但仍然得到相同的错误:

在此输入图像描述

Eya*_* Ch 11

如果您的哈希键是'id',那么您无法通过以下方式查询:

KeyConditionExpression: "id = :id AND city = :city"
Run Code Online (Sandbox Code Playgroud)

或者:

KeyConditionExpression: "city = :city"
Run Code Online (Sandbox Code Playgroud)

您只能通过哈希和范围键查询dynamodb.

所以你的查询应该包含always hash key(id).如果你想通过'city'查询,你应该将'city'作为范围键添加到dynamodb表(或本地二级索引)

然后你可以用'id'和查询记录'city'.

更新:

如果你想查询 'city'

KeyConditionExpression: "city = :city"
Run Code Online (Sandbox Code Playgroud)

那么你可以只添加全局二级索引到表.