実現したいこと
複数DBを検索して、データを取得するAPIを作りたい
そのために、下記のプログラムについてアドバイスいただければと思います
環境
AWS Lambda: Node.js 6.10
データベース: DynamoDB
現状
お世話になります。
Node.jsを用いて、APIを開発しております。
複数のDynamoDBに存在するデータを検索したいのですが、うまくいっておりません。
var AWS = require("aws-sdk"); var dynamo = new AWS.DynamoDB.DocumentClient(); var tableName = "データベース"; var common = require("インポートファイル"); exports.handler = (event, context, callback) => { var response = common.response(); if (!event.queryStringParameters) // クエリの入力判定処理 if (!event.queryStringParameters.uid) // クエリの入力判定処理 var param1 = { "TableName": tableName, ProjectionExpression: "取得するデータ", FilterExpression: "判定条件", ExpressionAttributeNames: { // 変数を置換 }, ExpressionAttributeValues: { } }; dynamo.scan(param1, function(err1, data1) { if (err1) { response.statusCode = 500; response.body = JSON.stringify({ "message": err1 }); } else { var result = []; if (data1.Items) { data1.Items.forEach(function(val) { var param2 = { "TableName": "データベース名", ProjectionExpression: "取得する変数", FilterExpression: "判定条件", ExpressionAttributeNames: { // 変数を置換 }, ExpressionAttributeValues: { } }; console.log(param2); dynamo.scan(param2, function(err2, data2) { console.log(data2); if (err2) { response.statusCode = 500; response.body = JSON.stringify({ "message": err2 }); } else { console.log(data2.Items); result[result.length] = data2.Items; } return; }); }); response.body = JSON.stringify(result); callback(null, response); return; } } }); };
上記のプログラムを実行すると、dynamodb.scan (param2
直前の
console.log(param2);
では、正しい結果が得られているのですが、dynamodb.scan (param2
直後の
console.log(data2);
では、何も結果が返ってきません。。。
(そもそもデータがないわけではなく、判定条件も間違ってないと思われます。
スキャン数はデータベースのデータ数とも一致しております。)
上記のプログラムにに間違っている箇所があれば教えていただきたいです。
また、より良い実装があれば、アドバイスが欲しいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/07 05:25 編集