从 DynamoDB 中删除项目 php

Delete item from DynamoDB php

似乎无法从 php 中的 dynamo 数据库中删除项目。

我想删除具有特定 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 作为一个数字 (N) 而在底部一个你有 user_id 作为一个字符串 (S) 所以我的猜测是 Dynamo 只是标记那个架构中没有该类型的 user_id。

The provided key element does not match the schema.

user_id 似乎不是您的 table 架构的一部分。您将它包含在 deleteItem'Key' 参数中,这是不正确的。您只能通过键删除项目。

当您从查询迭代器中获取项目时,您需要检索作为 table 键的一部分的值,然后在 deleteItem'Key' 参数.