Запрос на удаление из пакета для записи в Dynamodb не работает с разделом и ключом сортировки - PullRequest
0 голосов
/ 29 ноября 2018

Обзор таблицы:

ItemTable:
      Type: AWS::DynamoDB::Table
      DeletionPolicy: Retain
      Properties:
        TableName: Items
        KeySchema:
          - AttributeName: projectId
            KeyType: HASH
          - AttributeName: addedTime
            KeyType: RANGE
        AttributeDefinitions:
          - AttributeName: projectId
            AttributeType: S
          - AttributeName: addedTime
            AttributeType: N
          - AttributeName: id
            AttributeType: S
        PointInTimeRecoverySpecification:
          PointInTimeRecoveryEnabled: true
        ProvisionedThroughput:
          ReadCapacityUnits: ${self:custom.tableThroughput}
          WriteCapacityUnits: ${self:custom.tableThroughput}
        LocalSecondaryIndexes:
        - IndexName: idIndex
          KeySchema:
          - AttributeName: projectId
            KeyType: HASH
          - AttributeName: id
            KeyType: RANGE
          Projection:
            ProjectionType: ALL

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

Я получаю всезаписи, имеющие конкретный идентификатор проекта.Я зацикливаюсь на каждом элементе и создаю параметры для пакетной записи и выполняю запрос.что выдает ошибку, что «Предоставленный ключевой элемент не соответствует схеме».

// Запрос для поиска всех записей, имеющих конкретный идентификатор проекта.// зацикливание на каждом элементе

 params.RequestItems['Items'] = [];
 for (let i = 0; i < allRecordsWithSameProjectId.length; i++) {
          params.RequestItems['Items'].push({ DeleteRequest: {
            Key: { 
              projectId: allRecordsWithSameProjectId[i].projectId, 
              addedTime: allRecordsWithSameProjectId[i].addedTime
            }
          } 
        });
        }
    }
 let operationResult = await docClient.batchWrite(params).promise();

Я обнаружил, что для удаления элемента необходимы и хэш, и ключ диапазонаЯ передаю оба, но все еще получаю ошибку.Примечание. Если я выполню запрос на удаление одного элемента с ключом (projectId и AddedTime) в ключе, операция будет успешной.

Пожалуйста, помогите.

...