过滤发电机数据库表会产生无效的KeyConditionExpression GSI

时间:2018-07-03 13:22:42

标签: aws-lambda amazon-dynamodb

我有一个包含ID和名称的表,我有一个GSI索引,分区键为 theName 和排序列 Last_attended 。我正在尝试使用Lambda查询它,但无法返回任何结果。我一直在围绕格式错误。我将DocumentClient与查询方法配合使用,每次运行它都会不断给我一个不同的错误。 不确定我在这里缺少什么,我们将不胜感激.....

!-数据

{
  "id": 20919382411,
  "Belt_awarded": "green",
},
{
  "id": 20919382412,
  "Belt_awarded": "yellow",
}

!---代码

 const docClient = new AWS.DynamoDB.DocumentClient()

   const params = {
      TableName : `students`,
      "IndexName": "theName-Last_attended-index",
      KeyConditionExpression: '#id = :id_val',
      ExpressionAttributeValues: { ":id_val": {"N": "20919382411"}, ':v_name': { 'S': 'joe' } }
    }

1 个答案:

答案 0 :(得分:1)

您的ExpressionAttributeNames在哪里?

您将#id定义为表达式属性,但没有声明任何ExpressionAttributeNames

您正在使用文档客户端。应该是这样的

const params = {
    TableName: 'students',
    IndexName: 'Belt_awarded-index',
    KeyConditionExpression: '#Belt_awarded = :Belt_awarded',
    ExpressionAttributeNames: {
        '#Belt_awarded': 'Belt_awarded'
    },
    ExpressionAttributeValues: {
        ':Belt_awarded': 'yellow'
    },
};