我想要做一個batch_get_item來請求表中的多個項目。我正在關注DynamoDB文檔中的PHP示例,但我沒有得到我期待的結果。DyanmoDB:沒有得到我期待的答案batch_get_item
以下是代碼:
$batch_array = array();
$batch_array[]= array ('HashKeyElement' =>
array(AmazonDynamoDB::TYPE_STRING => 'V1L3M5O5L1W8R5B6D2Q1S8V0B3R8M7A6R0X0'));
$options = array (
'RequestItems' => array(
'profile_dev' => array (
'Keys' => $batch_array
)
)
);
$result = $this->db->batch_get_item($options);
非但沒有數據,我得到一個非常長的反應,我包括從它尾部的相關信息:
[x-aws-body] => {"RequestItems":{"profile_dev":{"Keys":[{"HashKeyElement":{"S":"V1L3M5O5L1W8R5B6D2Q1S8V0B3R8M7A6R0X0"}}]}}}) [body] => CFSimpleXML Object ([__type] => com.amazon.coral.validate#ValidationException [message] => One or more parameter values were invalid: The provided key size does not match with that of the schema) [status] => 400))
該表的hashKey是一個字符串。它有一個rangeKey,但我使用的是hashKey,因此我可以獲得與hashKey匹配的所有行。我錯過了什麼?
是的,他們在某些方面可怕的文檔。 getItem的API文檔表明,使用散列範圍,必須提供兩件事才能獲取項目。鑑於這種不受約束的約束,我還沒有想到這種密鑰的一個很好的用例。 –
@DavidPelaez爲了獲得一個你需要提供的物品,但是要獲得一組物品,你可以在第一個物品上查詢,並根據第二個物品獲取所有匹配的物品。 –