Кажется, я не хочу, чтобы моя голова удаляла элементы из dynamo db в php.
Я хотел бы удалить все элементы с определенным user_id. Во-первых, я получаю все элементы пользователей, например:
$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
'Key'
deleteItem
.
Наверху у вас есть user_id как число (N), а внизу - user_id как строка (S), поэтому я предполагаю, что Dynamo просто отмечает, что в схеме нет user_id этого типа.
describeTable
вызов или смотреть в консоли AWS