2017-12-10 12 views
0

私はkoaを使用してノードサーバからapi呼び出しの結果をフロントエンドに返そうとしています。ここに、自分のAPIにアクセスできるnpmモジュールが必要なコントローラがあります。結果を待つ必要があり、返すより、間違っている?私は以前のプロジェクトで同様のことをしましたが、私はdbからデータを要求していました。 私は1週間だけノードを使用していますが、なぜ誰も助けてくれないのですか?それは代わりに、約束のコールバックを使用するため、あなたはcolor.getを待つことはできませんthksctx.body async/await関数でundefind

const color = require('colourlovers'); 

exports.getAllColors = async (ctx) => { 
    ctx.res.body = await color.get('/color/FFFFFF', { format: 'json' }, (err, data) => { 
    console.log(data);//<---here is logging the data 
    return data; 
    }); 
    console.log(ctx.res.body);//<---here is udefined 
    ctx.status=200; 
}; 

答えて

1

は(まあ、あなたはそれを待つことができますが、それはあなたが期待するもの行いません)。今では解決または拒否する約束を待ちます

ctx.res.body = await new Promise((resolve, reject) => { 
    color.get('/color/FFFFFF', { format: 'json' }, (err, data) => { 
     if(err) reject(err); 
     else resolve(data); 
    }); 
}); 

:だから待つ使用するには、約束を自分で構築する必要があります。

関連する問題