현재 영구 데이터를 사용해야하는 Amazon의 에코 도트에 대한 기술을 개발 중입니다. 스킬에서 사용하는 DynamoDB 테이블의 mapAttr
열을 쉽게 업데이트 할 수없는 스킬 용 웹 인터페이스를 개발할 때 문제가 발생했습니다.DynamoDB 테이블의지도 열을 업데이트 할 수 없습니다.
지난 2 일 동안이 문제를 해결하기 위해 노력했지만 문서를 비롯한 모든 곳을 살펴 보았지만 나에게 도움이 될만한 것을 찾지 못했습니다. 이것은 단지 절대적으로 잘못 될 수 있도록 나는 많은 다른 것들을 시도
$result = $client->updateItem([
'TableName' => 'rememberThisDBNemo',
'Key' => [
'userId' => [ 'S' => $_SESSION['userDataAsk'] ]
],
'ExpressionAttributeNames' => [
'#attr' => 'mapAttr.ReminderJSON'
],
'ExpressionAttributeValues' => [
':val1' => json_encode($value)
],
'UpdateExpression' => 'SET #attr = :val1'
]);
하지만 내가 근무하고 발견 아무것도 :
이
은 내가 사용하고 코드입니다.의 표는 2 열, userId를 및 mapAttr을 가지고, userId를 문자열이며 mapAttr은 맵입니다. 원래 JSON 문자열 일 뿐이라고 생각했지만 JSON 문자열로 직접 업데이트하려고 시도했을 때 Alexa가 읽을 때 작업이 중단되는 것처럼 느껴지지 않았습니다.
mapAttr의 2 가지 속성 중 1 개만 업데이트하려고합니다. 그것은 문자열 인 ReminderJSON입니다.
도움을 주시면 감사하겠습니다. 감사.
나는 두 가지 방법 모두 시도했지만 어느 것도 효과가없는 것으로 보인다. 많은 시도가 빈번하게 발생하지만 표준 200 HTTP 응답 코드 *를 반환합니다. 예외 처리를 위해 AwsException과 DynamoDbException 두 가지를 모두 시도했지만 예외는 없습니다. 뭐든지 잡아라. – CristianHG
mapAttr 맵에서 ReminderJSON 항목을 업데이트하는 대신 새로운 최상위 속성'mapAttr.ReminderJSON' (예 : 이름에 점이 있음)을 작성한다는 사실을 알지 못했을 수 있습니까? 코드 스 니펫에 표시된 것과 같이 ''#attr '=>'mapAttr.ReminderJSON''을 지정하면 정확히 얻을 수 있기 때문입니다. 필자의 예에서는지도와 속성 이름이 다르게 지정되어 있습니다. – xtx