似乎无法在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
有人可以对此有所了解吗?
答案 0 :(得分:1)
提供的关键元素与架构不匹配。
user_id
似乎不是表格架构的一部分。您将其包含在'Key'
的{{1}}参数中,这是不正确的。您只能按键删除项目。
当您从查询迭代器中获取项目时,您需要检索作为表格密钥一部分的值,然后在deleteItem
的{{1}}参数中指定这些值。
答案 1 :(得分:0)
在顶部,你有user_id作为数字(N),在底部你有user_id作为字符串(S)所以我的猜测是Dynamo只是标记模式上没有该类型的user_id。