Удалить элемент из DynamoDB php

0

Кажется, я не хочу, чтобы моя голова удаляла элементы из 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

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

Теги:
amazon-dynamodb

2 ответа

1
Лучший ответ

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

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

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

  • 0
    Круто, так как мне найти ключ таблиц, итератор запросов не возвращает ничего общего с «Ключом» из того, что я могу сказать
  • 0
    Выполните describeTable вызов или смотреть в консоли AWS
Показать ещё 1 комментарий
0

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

  • 0
    Фактическая орфографическая ошибка в посте. Исправлена. Но, очевидно, все еще не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню