実行環境:AWS Lambda Node.Js 16.x
ここに質問の内容を詳しく書いてください。
awsのlambda内でnode.js 16.xを利用してdyanamodb内のデータを抽出したいと考えております.
その中で、辞書型の中身を抜き出そうとした時にエラーが発生してしまいました。
実現したいこと
for文を要素の回数だけ実行して、for文内の変数をfor分外で利用した
発生している問題・エラーメッセージ
{
"errorType": "ReferenceError",
"errorMessage": "to_list is not defined",
"trace": [
"ReferenceError: to_list is not defined",
" at Runtime.exports.handler (/var/task/index.js:25:17)",
" at processTicksAndRejections (node:internal/process/task_queues:96:5)"
]
}
START RequestId: 90261f40-1a40-46ab-a0f8-835001abed9e Version: $LATEST 2022-09-16T01:44:09.924Z 90261f40-1a40-46ab-a0f8-835001abed9e ERROR Invoke Error {"errorType":"ReferenceError","errorMessage":"to_list is not defined","stack":["ReferenceError: to_list is not defined"," at Runtime.exports.handler (/var/task/index.js:25:17)"," at processTicksAndRejections (node:internal/process/task_queues:96:5)"]} END RequestId: 90261f40-1a40-46ab-a0f8-835001abed9e REPORT RequestId: 90261f40-1a40-46ab-a0f8-835001abed9e Duration: 907.64 ms Billed Duration: 908 ms Memory Size: 128 MB Max Memory Used: 82 MB Init Duration: 417.13 ms
該当のソースコード
Node.js
1var aws = require('aws-sdk'); 2var dynamo = new aws.DynamoDB(); 3 4exports.handler = async (event) => { 5 let prm={ 6 tablename:"sample_table",//テーブル名 7 pk_name:"p_key",//パーテーションキーの名称 8 pk_prm:{S:"key1"},//検索パーテーションキーの指定 9 sk_name:"s_key",//ソートキーの名称 10 sk_prm:{N:"key1"},//検索ソートキーの指定 11 }; 12 let res= await dynamoquery_pksk(prm); 13 14 const to_list_num = Object.keys(res).length 15 16 for(var i = 0; i < to_list_num; i++) { 17 const to_list = res[i] 18 } 19 console.log(to_list) 20 return res; 21}; 22 23function dynamoquery_pksk(obj){ 24 return new Promise((resolve, reject) => { 25 let params = { 26 "TableName": obj.tablename, 27 "KeyConditionExpression": "#pk_name = :pk_prm and #sk_name < :sk_prm" ,//検索条件 パーテーションキーでのは=のみ 28 "ExpressionAttributeNames":{ 29 "#pk_name": obj.pk_name, 30 "#sk_name": obj.sk_name 31 }, 32 "ExpressionAttributeValues": { 33 ":pk_prm": obj.pk_prm, 34 ":sk_prm": obj.sk_prm, 35 } 36 }; 37 dynamo.query(params,function(err, data) { 38 if (err) { 39 reject(err, err); 40 } else { 41 resolve(data.Items); 42 } 43 }); 44 }); 45}
試したこと
cnsole.logの出力をfor分内で実行すると成功します。for文の外に変数を引渡す方法などはありますでしょうか?
回答1件