Кажется, я не могу забыть об удалении предметов из динамо-базы в 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
Может ли кто-нибудь пролить свет на это?
Предоставленный ключевой элемент не соответствует схеме.
user_id
не кажется частью схемы вашей таблицы. Вы включаете его в 'Key'
параметр deleteItem
, что неверно. Вы можете удалить элементы только по их ключу.
Когда вы получаете элементы от итератора запроса, вам нужно извлечь значения, которые являются частью ключа таблицы, а затем указать их в deleteItem
«s 'Key'
параметр.
В верхней части у вас есть user_id в виде числа (N), а в нижней — у вас user_id в виде строки (S), поэтому я предполагаю, что Dynamo просто отмечает, что в схеме нет user_id этого типа.