お世話になってます。
javascript (node.js) でアプリを作ろうとしており、ハマっているので質問させてください。
やりたいこと
- 画像提供サービスからAPI経由で画像情報を取得
- 取得した画像をFirebase Storageに保存
できずにいること
- 画像情報は取得できたがソースコード上で変数に代入するとundefinedとなってしまう
環境
node : v8.7.0
直接関係ないとは思いますが補足すると、最終的にFirebase Functions上で動かしたいので、
今はMacにfirebase-toolsをインストールし、ローカル(エミュレータ)で動作確認しています。
書いたソースコード
javascript
1const rp = require('request-promise'); 2 3const options = { 4 uri: xxx, // 省略 5}; 6 7exports.api = functions.https.onRequest((request, response) => { 8 async function main(){ 9 // 画像情報を取得 10 const photoInfo = await getPhotoInfo(); 11 // (2)ここで変数photoInfoに(1)で取得した画像情報が入っていてほしいが、 12 // undefinedとなってしまう 13 console.log(photoInfo); 14 15 // 画像をダウンロード 16 17 // 画像をアップロード 18 } 19 20 main(); 21 22 function getPhotoInfo() { 23 rp(options) 24 .then(res => { 25 // (1)ここでは変数resに取得した画像情報がjson形式で格納される 26 let response = JSON.parse(res); 27 }); 28 } 29 30 response.send("Send successfully"); 31});
request-promiseは処理に成功したらpromiseを返すのかと思い、photoInfo.then(res => {console.log(res)})
としたのですがUnhandledPromiseRejectionWarning
が出てエラーとなってしまいます。
promiseやasync/awaitの使い方を間違えているだけだと思いますが、request-promiseでawaitを使って同期的に処理を記述するやり方にたどり着けていません。
アドバイスを頂けると幸いです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/03 10:19
退会済みユーザー
2018/11/03 10:22
2018/11/03 10:46
退会済みユーザー
2018/11/03 11:32
2018/11/03 13:45
退会済みユーザー
2018/11/03 13:56
2018/11/03 14:51
退会済みユーザー
2018/11/03 15:03 編集