从DynamoDB php中删除项目

时间:2015-03-06 21:34:10

标签: php amazon-dynamodb

似乎无法在php中删除Dynamo db中的项目。

我想删除具有特定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

有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:1)

  

提供的关键元素与架构不匹配。

user_id似乎不是表格架构的一部分。您将其包含在'Key'的{​​{1}}参数中,这是不正确的。您只能按键删除项目。

当您从查询迭代器中获取项目时,您需要检索作为表格密钥一部分的值,然后在deleteItem的{​​{1}}参数中指定这些值。

答案 1 :(得分:0)

在顶部,你有user_id作为数字(N),在底部你有user_id作为字符串(S)所以我的猜测是Dynamo只是标记模式上没有该类型的user_id。