查询dynamoDB表并删除结果(带循环)

时间:2014-07-07 23:19:25

标签: laravel-4 amazon-dynamodb

我有一个应用程序,它保留[哈希,数字]的记录,如果我只有哈希值,则想要删除记录。每个哈希应该不止一条记录,因此批量删除可能不是最佳选择。

根据我的理解,我无法直接删除哈希值,并且需要对结果运行查询和iteratoe:Delete rows by id and range condition?

到目前为止我所拥有的:

   $dynamoDB = App::make('aws')->get('DynamoDb');
   $token = "usertoeknstringthatisthislong"

    $users = $dynamoDB->query(array(
        "TableName" => 'usertokens',
        "KeyConditions" => array(
            "token" => array(
                "AttributeValueList" => array (
                    array('S' => $token)
                ),
                "ComparisonOperator" => "EQ"
            )
        )
    ));
    return $users;

    foreach ($users as $user) {

        $dynamoDB->deleteItem(array(
            "TableName" => 'usertokens',
            "Key" => array(
                "token" => $token,
                "id" => $user
            )
        ));

    }

我无法正确获取语法(laravel-4)并收到错误"验证错误:[Key] [id]必须是object类型[Key] [token]必须是object类型&# 34;

我无法找到验证器/ lint程序或其他一些调试方法。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

在此处找到example删除项目

代码中有两个可能的问题:

1)从“令牌”到$令牌的映射不正确。看到这个例子。 “token”应该映射到另一个关联数组,以便DynamoDB知道令牌是数字还是字符串。同样适用于你的“id”映射。

2)也仔细检查你的迭代。

foreach ($users as $user)

因为我认为查询返回的实际项目位于查询响应的“Items”字段中。见doc