質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

解決済

nodejsのfor文の外への変数のわたし方

shunn
shunn

総合スコア2

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

1回答

0リアクション

0クリップ

194閲覧

投稿2022/09/16 01:49

実行環境: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

var aws = require('aws-sdk'); var dynamo = new aws.DynamoDB(); exports.handler = async (event) => { let prm={ tablename:"sample_table",//テーブル名 pk_name:"p_key",//パーテーションキーの名称 pk_prm:{S:"key1"},//検索パーテーションキーの指定 sk_name:"s_key",//ソートキーの名称 sk_prm:{N:"key1"},//検索ソートキーの指定 }; let res= await dynamoquery_pksk(prm); const to_list_num = Object.keys(res).length for(var i = 0; i < to_list_num; i++) { const to_list = res[i] } console.log(to_list) return res; }; function dynamoquery_pksk(obj){ return new Promise((resolve, reject) => { let params = { "TableName": obj.tablename, "KeyConditionExpression": "#pk_name = :pk_prm and #sk_name < :sk_prm" ,//検索条件 パーテーションキーでのは=のみ "ExpressionAttributeNames":{ "#pk_name": obj.pk_name, "#sk_name": obj.sk_name }, "ExpressionAttributeValues": { ":pk_prm": obj.pk_prm, ":sk_prm": obj.sk_prm, } }; dynamo.query(params,function(err, data) { if (err) { reject(err, err); } else { resolve(data.Items); } }); }); }

試したこと

cnsole.logの出力をfor分内で実行すると成功します。for文の外に変数を引渡す方法などはありますでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

int32_t

2022/09/16 02:00

to_list には最終的には何が入ってほしいのでしょうか?
shunn

2022/09/16 04:00 編集

たとえば{"A":"a","B":"b"}というデータがresのなかに入っていたとしたら、この実行した時には"b"という値がかえってきてほしいです。
shunn

2022/09/16 03:59

1回目といいますが、このプログラムを実行した時には"b"の値がかえってきてほしいです。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。