2012-05-18 3 views
3

Я пытаюсь обновить таблицу в своих таблицах DynamoDB с помощью PHP SDK. Вот ошибка:DynamoDB с PHP, ошибка с update_item

com.amazon.coral.service # SerializationException Начало списка найденных где не ожидается

Я предполагаю, что есть что-то не так с форматированием моего массива. Я использую этот documentation для справки.

Массив Я посылаю:

array(3) { 
    ["TableName"]=> 
    string(7) "teacher" 
    ["Key"]=> 
    array(1) { 
    ["HashKeyElement"]=> 
    array(1) { 
     ["S"]=> 
     string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
    } 
    } 
    ["AttributeUpdates"]=> 
    array(1) { 
    [0]=> 
    array(2) { 
     ["population"]=> 
     array(1) { 
     ["Action"]=> 
     string(3) "ADD" 
     } 
     ["Value"]=> 
     array(1) { 
     ["SS"]=> 
     array(1) { 
      [0]=> 
      string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
     } 
     } 
    } 
    } 
} 

ответ

0

"популяции" в AttributeUpdates неправильно помещен в массиве. Он должен быть ключом к элементу, а не самому элементу. «Значение» и «Действие» является частью элемента массива: структура должна быть:

array(3) { 
    ["TableName"]=> 
    string(7) "teacher" 
    ["Key"]=> 
    array(1) { 
    ["HashKeyElement"]=> 
    array(1) { 
     ["S"]=> 
     string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
    } 
    } 
    ["AttributeUpdates"]=> 
    array(1) { 
    ["population"]=> 
    array(1) { 
     ["Value"]=> 
     array(2) { 
     ["SS"]=> 
     array(1) { 
      [0]=> 
      string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
     } 
     ["Action"]=> 
     string(3) "ADD" 
     } 
    } 
    } 
} 

Источник:

$updateOptions = array(
    'TableName' => 'teacher', 
    'Key'   => array(
     'HashKeyElement' => array('S' => '97770A6A-EF06-AF4A-3E30-87DAC0237F6D'), 
), 
    'AttributeUpdates' => array(
     'population' => array('Value' => array('SS' => array('97770A6A-EF06-AF4A-3E30-87DAC0237F6D'), 'Action' => 'ADD')), 
) 
);