表題の件で記載させて頂きます。
現在、Lambda Node.js上からDynamoDBをScanし、
プライマリキー,ソートキーどちらにも属さない、flagの値に1が入っているデータが、
1件以上カウントされれば処理を続行、
0件であればそこで処理終了というコードを考えています。
DynamoDB※以下ですと、flagが1のデータが1件あるので処理が続行される予定です。
1{ 2 "Items": [ 3 { 4 "No": { 5 "S": "1dx" 6 }, 7 "flag": { 8 "N": "1" 9 } 10 }, 11 { 12 "No": { 13 "S": "2dx" 14 }, 15 "flag": { 16 "N": "" 17 } 18 },
上記DynamoDBに対するコードは以下です。
想定では0件=エラーとなる予定でしたが、
結果が0なだけであってどちらも成功となりますね。
Node.js
1const AWS = require("aws-sdk"); 2require('date-utils'); 3const DynamoDB = new AWS.DynamoDB.DocumentClient({ region: "ap-northeast-1" }); 4 exports.handler = async event => { 5//フラグを定義 6 const trigger = { 7 TableName: 'tablename', 8 FilterExpression: 'flag = :flag', 9 ExpressionAttributeValues:{ 10 ':flag': '1', 11 }, 12}; 13//フラグが1のデータがテーブルに存在するか 14 await new Promise((resolve, reject) => { 15 DynamoDB.scan(trigger, (err, data) => { 16 console.log(result); 17 if(err){ 18//存在しない場合終了 19 console.log("フラグ無し"); 20 reject(err); 21 }else{ 22 console.log("フラグ有り"); 23 console.log(data); 24 resolve(JSON.stringify(data)); 25 }); 26});
if文にScanの結果のCountを条件にすれば、理想の動きを確認出来ると思うのですが、
例えば、if(Items.Count = 0){などしても構文エラーが発生してしまいます。
ここの理解が乏しいので、ご教示頂けると嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。