Запрос таблицы DynamodB по первичному ключу - PullRequest
0 голосов
/ 11 июня 2019

У меня проблемы с созданием простого запроса. Здесь они показывают пример того, как сделать запрос, используя глобальный вторичный индекс.Теперь в этом случае у меня просто есть первичный ключ, и я хотел бы сделать запрос из моей таблицы.В настоящее время я получаю сообщение об ошибке:

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», которое соответствует имени вторичных индексов.Кажется, они не имеют такой ключевой схемы атрибут .

Вот как выглядит моя таблица, определенная в файле 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 Ответ

1 голос
/ 11 июня 2019

При попытке выполнить запрос по первичному ключу с именем HashKey:

KeyConditionExpression: 'HashKey = :hkey',

Однако ваш первичный ключ называется id, на что указывает сообщение об ошибке. Поэтому измените эту строку на:

KeyConditionExpression: 'id = :hkey',
...