Обзор таблицы:
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) в ключе, операция будет успешной.
Пожалуйста, помогите.