2016-09-15 1 views
0

DynamoDB 인스턴스에 데이터를 저장하는 AWS API 게이트웨이가 있습니다. 내 테이블 구조는 다음과 같습니다 : 나는 company_inc.prod를 업데이트 할 수는 HTTP PATCH 요청을 제공하도록 내 몸 매핑 템플릿을 구성하는 방법을 알아 내려고 노력하고있어중첩 데이터로 UpdateExpression을 구성하는 방법

{ 
    "TableName": "stuff", 
    "Item": { 
    "stuffId": { 
     "S": "02b4e004-1132-4b87-a855-20e7d1bd1840" 
    }, 
    "clients": { 
     "M": { 
     "company_inc": { 
      "M": { 
      "prod": { 
       "S": "null" 
      }, 
      "qa": { 
       "S": "null" 
      }, 
      "stage": { 
       "S": "null" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

. 예를 들어; 내가 기록을 업데이트

?stuffId=02b4e004-1132-4b87-a855-20e7d1bd1840&client=company_inc&location=prod&locationIsSet=true 

는 다음과 같이하기 :

{ 
    "TableName": "stuff", 
    "Item": { 
    "stuffId": { 
     "S": "02b4e004-1132-4b87-a855-20e7d1bd1840" 
    }, 
    "clients": { 
     "M": { 
     "company_inc": { 
      "M": { 
      "prod": { 
       "S": "true" 
      }, 
      "qa": { 
       "S": "null" 
      }, 
      "stage": { 
       "S": "null" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

무엇 "UpdateExpression은"그것을 달성하기 위해 같이해야이 쿼리 문자열 주어진?

답변

0

답변을 찾은 것 같습니다. company_inc.prod의 경로에 자리 표시 자로 #client#location과 같은 속성 이름을 사용해야합니다.

{ 
    "TableName": "stuff", 
    "Key": { 
     "alterId": { 
      "S": "$input.params('stuffId')" 
     } 
    }, 
    "UpdateExpression": "set clients.#attrClientName.#attrLocation = :locationIsSet", 
    "ExpressionAttributeNames" : { 
     "#attrClientName" : "$input.params('client')", 
     "#attrLocation" : "$input.params('location')" 
    }, 
    "ExpressionAttributeValues": { 
     ":locationIsSet": {"S": "$input.params('location')"} 
    } 
} 
관련 문제