チャットアプリを作成していますが、
テキストメッセージの後に写真ファイルを表示したいのですが、
写真ファイルの読み込みに時間が掛かり、テキストメッセージの表示後に
写真ファイルが読み込まれてしまします。
具体的な内容ですが、
テキストメッセージ、写真ファイルの保管先:DynamoDB
写真データの保管先:S3
1.テキストメッセージ、写真ファイル名が記述れているレコードを取得
2.ファイル名を取得しS3へファイルを要求
すると、以下のようになってしまいます。
メッセージ1
メッセージ2
メッセージ1の写真ファイル
メッセージ2の写真ファイル
js
1// メッセージと写真ファイル取得.js 2 reservation_management_id = '906'; 3 4 postData.dynamoChatMessageGet(reservation_management_id).then(function(result) { 5 if (result.Count !== 0) { 6 for (i = 0; i < result.Count; i++) { 7// console.log('[DEBUG] ', result.Items[i].file_name.S); 8 9 if (result.Items[i].file_name.S !== 'notfile') { 10 file_name = result.Items[i].file_name.S; 11 // 添付ファイルの取得 12 postData.s3AttachmentFile(reservation_management_id, file_name).then(function(result) { 13 var fileData = result; 14 console.log('[DEBUG] Target Attachment File: reservation_management_id=', reservation_management_id, ' file_name=', file_name, 'length count:', fileData.length); 15 } 16 }); 17 } 18 } 19 } else { 20 console.log('[DEBUG] Not history reservation_management_id:', reservation_management_id); 21 } 22 });
js
1// DynamoDBからメッセージ取得する.js 2exports.dynamoChatMessageGet = function(reservation_management_id) { 3 // Promiseオブジェクトを返却する.処理成功時にはresolveが呼ばれる 4 return new Promise(function(resolve) { 5 var options = { 6 uri: chat_message_url + "get_chat", 7 method: 'POST', 8 headers: { 9 "Content-type": "application/json", 10 }, 11 json: true, 12 json: { 13 "table_name": "mgc_d_chat", // DynamoDBのテーブル 14 "reservation_management_id": reservation_management_id, // 予約番号 15 } 16 }; 17 request.post(options, function(error, response, body) { 18 if (!error && response.statusCode == 200) { 19 resolve(body); 20 } else { 21 console.log('error: ' + response.statusCode); 22 } 23 }); 24 }) 25};
js
1// S3から写真データを取得する.js:S3を管理しているWEBサーバへpostしてデータを取得 2exports.s3AttachmentFile = function(reservation_management_id, file_name) { 3 return new Promise(function(resolve) { 4 var options = { 5 uri: chat_message_url + "get_file", 6 method: 'POST', 7 headers: { 8 "Content-type": "application/json", 9 }, 10 json: true, 11 json: { 12 "reservation_management_id": reservation_management_id, // 予約番号 13 "file_name": file_name, //ファイル名 14 } 15 }; 16 request.post(options, function(error, response, body) { 17 if (!error && response.statusCode == 200) { 18 resolve(body); 19 } else { 20 console.log('error: ' + response.statusCode); 21 } 22 }); 23 }) 24}; 25
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。