从 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'
参数.
似乎无法从 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'
参数.