webサイトにてdynamoDBからカラム名を除き値だけを表示したい。
解決したいこと
webサイトにてdynamoDBからカラム名を除き値だけを表示したい。
現在cloudfront,s3(静的サイト,js),apigateway,lambda,dynamoDBで簡易的なweb
サイトを構築しています。
dynamoDBのレコードを取得するとキーバリュー型?json型で取得されてしまいます。
apigateway上のpythonにてカラム名を指定しても、s3上のjsでjson型をオブジェクトにparseしてカラム名で指定しても以下のような形で返されるままになってしまいます。
発生している問題・エラー
{"dbItemsItemsresponse": [{"input_text": "こんにちは", "output_text": "Hello", "timestamp": "datetime"},
すごく基本的なことであり、dynamoDBを使用して同じように構築する人は多いはずですが調べてもうまくいきません。
上記のようなアーキテクチャであった場合、どのようにdynamoDBからキー?を排除し、値だけ取ってきているのでしょうか。
もしくはDBをmysqlにするとapiで返ってくるものをカラムで指定し、値だけをwebサイトに表示出来るのでしょうか。(戻り値がオブジェクト型になる?)
s3のjsにてresponseをparseしたもの
function func1() {
var apiurl = 'https://' + document.domain + '/api?input_text=' + document.getElementById("input_message").value;
var request = new XMLHttpRequest();
request.open('GET', apiurl, true);
request.responseType = 'text';
request.onload = function () {
var data = json.parse(this.response);
document.getElementById("output_message").innerHTML = data['dbItemsItemsresponse'];
};
request.send();
}
lambdaでdynamoDBから値を取ってくる時にカラム名で指定したもの。ProjectionExpressionでカラム指定(input_type)しても、値だけでなくそのカラム名までデータを取ってきてしまいます。({input_text:値}という形で)
get_item = dynamodb_translate_history_tbl.scan(ProjectionExpression='input_text')
dbItemsItemsresponse = get_item['Items']
#bodys = [output_text ,dbresponse]
return {
'statusCode': 200,
'body':json.dumps({'dbItemsItemsresponse' : dbItemsItemsresponse}),
'isBase64Encoded': False,
'headers': {}
}
end