通过主键查询动态表

时间:2019-06-11 15:27:04

标签: amazon-web-services amazon-dynamodb dynamodb-queries amazon-dynamodb-index

我在创建简单的查询请求时遇到问题。 Here展示了一个如何使用全局二级索引进行查询的示例。现在,在这种情况下,我只有主键,我想从表中查询。当前,这是我得到的错误:

Query condition missed key schema element: id

这是我当前正在尝试的:

var params = {
  TableName : "XactRemodel-7743-DynamoDBImagesTable-8183NQ0UG0Y5",
  KeyConditionExpression: 'HashKey = :hkey',
  ExpressionAttributeValues: {
    ':hkey': event.projectId
  }
};
documentClient.query(params, function(err, data) {
   if (err) {
     console.log(err)
   } else {
     console.log(data);
   }
});

我知道在示例中他们使用了“ indexName”,它对应于二级索引名称。他们的关键架构似乎没有这样的attribute

这是在YAML文件中定义的表的外观:

DynamoDBImagesTable:
Type: AWS::DynamoDB::Table
Properties:
  BillingMode: PAY_PER_REQUEST
  SSESpecification:
    SSEEnabled: true
  PointInTimeRecoverySpecification:
    PointInTimeRecoveryEnabled: true
  AttributeDefinitions:
    - AttributeName: id
      AttributeType: S
    - AttributeName: companyId
      AttributeType: S
    - AttributeName: lastModified
      AttributeType: S
  KeySchema:
    - AttributeName: id
      KeyType: HASH
  GlobalSecondaryIndexes:
    - IndexName: companyId-index
      KeySchema:
        - AttributeName: companyId
          KeyType: HASH
        - AttributeName: lastModified
          KeyType: RANGE
      Projection:
        ProjectionType: ALL

我想念什么?

1 个答案:

答案 0 :(得分:1)

这正试图通过名为HashKey的主键进行查询:

KeyConditionExpression: 'HashKey = :hkey',

但是您的主键名为id,这是错误消息指出的内容。因此,将该行更改为:

KeyConditionExpression: 'id = :hkey',