我在API网关上设置了一个直接与DynamoDB对话的端点设置。
当发出帖子请求时,我使用body mapper脚本将我的url请求参数映射到dynamoDB params。
{
"name": "sdaf",
"location": "asdf",
"gender": "male"
}
{
"TableName": "sample-table",
"Item": {
"firstName": {
"S": "$input.path('$.name')"
},
"location": {
"S": "$input.path('$.location')"
}
}
}
所有这一切都很好,直到我必须将整个对象写入发电机。
{
"name": "sdaf",
"location": "asdf",
"gender": "male",
"hobbies": {
"hobby1": {
"startedAt": "<some time>"
},
"hobby2": {
"startedAt": "<some time>"
},
}
}
我不确定身体映射器应该如何看待这种情况? 我试过这个:
{
"TableName": "sample-table",
"Item": {
"firstName": {
"S": "$input.path('$.name')"
},
"location": {
"S": "$input.path('$.location')"
},
"hobbies": {
"M": "$input.path('$.hobbies')"
}
}
}
但是没有用。我想知道是否有办法直接从api网关将对象转储到dynamo中的列。我知道这可以在两者之间添加一个lambda,但我想避免这种情况。
答案 0 :(得分:0)
我不认为这可以在将爱好作为网址参数传递时发挥作用。
如果你在体内传递爱好,你可以这样做:
"M": {
#foreach( $elem in $input.path('$.hobbies'))
$elem
#if($foreach.hasNext),#end
#end
}