ノードを使用して海賊版のトップ100の映画のトレントをスキャンし、各結果のムービーポスターを追加しようとしています。node.jsのループ内でapi呼び出しを行う
私はトップ100を検索し、何の問題
app.get('/movies', function(req, res){
tpb.topTorrents(207).then(function(topMovies){
async.map(topMovies, tpb.getTorrent, function(err, results){
res.send(results);
})
})
});
で結果を返すことができています、私はこれらのライブラリに
を使用しています私はまた、経由で映画を検索することができていますIMDB IDと結果を返す
app.get('/imdb', function(req, res){
imdb.getReq({ id: 'tt2660888' }, function(err, things) {
res.send(things);
});
});
私がやろうとしているのは、トップ100の結果をループして、説明フィールドからimdb idを引き出し、画像フィールドを結果で置き換えるクエリimdbです。
app.get('/movies', function(req, res){
tpb.topTorrents(207).then(function(topMovies){
async.map(topMovies, tpb.getTorrent, function(err, results){
for (var value of results) {
if (S(value.description).contains('www.imdb.com/title/')) {
var imdbId = S(value.description).between('www.imdb.com/title/', '/').s
imdb.getReq({ id: imdbId }, function(err, movie) {
value["picture"] = movie.poster
});
}
}
res.send(results);
})
})
});
これは何らかの理由で機能しませんが、直感的にわかります。 imdb-apiの呼び出しを取り除き、値["picture"] = "foo"に置き換えてください。それは動作します。これがノードがループをどのように処理するかに関係があるかどうかはわかりません。私は、JSの世界に新たなんだとルビーの背景にあなたは非同期モジュールと正しい軌道に乗っている
パイレーツベイがダウンしているので、おそらくこれを削ることはおそらく動作しません。 – adeneo
いいえ、そうではありません。私の問題はとにかくtpbではありません – Nodeyboopers
これらの機能が何であるかは明確ではありません。「非同期」が何であるかは明らかではありませんが、通常の非同期ミドルウェアだと仮定しています。とにかく 'imdb.getReq()'は非同期で、おそらくイメージを取得していますが、 'res.send()'はそれよりずっと前に起きます。おそらくIMDBからの最初の応答を返して最初のイメージを置き換える前です。 – adeneo