Удалить элемент из переполнения стека DynamoDB

Кажется, я не могу забыть об удалении предметов из динамо-базы в php.

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

    $users = $this->ddb->getIterator('Query', array(
'TableName'     => 'users',
'KeyConditions' => array(
'user_id' => array(
'AttributeValueList' => array(
array('N' => Config::get('user_id'))
),
'ComparisonOperator' => 'EQ'
)
)
));

Затем я перебираю объект и удаляю каждый:

    foreach($users as $user) {
$this->ddb->deleteItem([
'TableName' => 'users',
'Key' => [
'user_id' => ['N' => $user['user_id']['S']]
]
]);
}

Независимо от того, как я это пробую, я получаю:

The provided key element does not match the schema

Может ли кто-нибудь пролить свет на это?

0

Решение

Предоставленный ключевой элемент не соответствует схеме.

user_id не кажется частью схемы вашей таблицы. Вы включаете его в 'Key' параметр deleteItem, что неверно. Вы можете удалить элементы только по их ключу.

Когда вы получаете элементы от итератора запроса, вам нужно извлечь значения, которые являются частью ключа таблицы, а затем указать их в deleteItem«s 'Key' параметр.

1

Другие решения

В верхней части у вас есть user_id в виде числа (N), а в нижней — у вас user_id в виде строки (S), поэтому я предполагаю, что Dynamo просто отмечает, что в схеме нет user_id этого типа.

0

По вопросам рекламы [email protected]