2016-01-08 148 views
0

我在写使用kat.cr API和IMDB API太一的NodeJS API,我没有使用json.stringify因为我不知道它在写作的时候哈哈XD,反正问题是,当我循环通过通过50在46中的代码,所述响应保持相同这里是一个例子, 这里产生JSON,问题通过阵列响应循环

{ 
    "MovieList": [{ 
    "title": "Jurassic World", 
    "imdb": "tt0369610", 
    "poster_med": "http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg", 
    "poster_big": "http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg", 
    "genres": ["Action, Adventure, Sci-Fi"], 
    "items": [{ 
     "torrent_magnet": "magnet:?xt=urn:btih:9D8BB2F07BC40BE4EA8EDAB7F7EB9C70A8AB2892&dn=maze+runner+the+scorch+trials+2015+hc+720p+hdrip+x264+shaanig&tr=udp%3A%2F%2Ftracker.publicbt.com%2Fannounce&tr=udp%3A%2F%2Fopen.demonii.com%3A1337", 
     "torrent_seeds": "1262", 
     "torrent_peers": "1306", 
     "id": "9D8BB2F07BC40BE4EA8EDAB7F7EB9C70A8AB2892" 
    }] 
    }, { 
    "title": "San Andreas", 
    "imdb": "tt2126355", 
    "poster_med": "http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg", 
    "poster_big": "http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg", 
    "genres": ["Action, Drama, Thriller"], 
    "items": [{ 
     "torrent_magnet": "magnet:?xt=urn:btih:9D8BB2F07BC40BE4EA8EDAB7F7EB9C70A8AB2892&dn=maze+runner+the+scorch+trials+2015+hc+720p+hdrip+x264+shaanig&tr=udp%3A%2F%2Ftracker.publicbt.com%2Fannounce&tr=udp%3A%2F%2Fopen.demonii.com%3A1337", 
     "torrent_seeds": "1262", 
     "torrent_peers": "1306", 
     "id": "9D8BB2F07BC40BE4EA8EDAB7F7EB9C70A8AB2892" 
    }] 
    }] 
} 

这里是履带式的代码:

var kat = require('kat-api'); 
var IMDb = require('imdb-scraper'); 
var movieTitle = require('movie-title'); 
var nameToImdb = require("name-to-imdb"); 
var movie = require('node-movie'); 
var fs = require('fs'); 
var util = require('util'); 
var log_file = fs.createWriteStream(__dirname + '/main.json', { 
    flags: 'w' 
}); 
var log_stdout = process.stdout; 

var config = '720p 2015'; //This is the line that should be changed if needed! 

console.log = function(d) { // 
    log_file.write(util.format(d) + '\n'); 
    log_stdout.write(util.format(d) + '\n'); 
}; 

var kat = require('kat-api'); 
kat.search({ 
    query: config, 
    category: 'movies', 
    language: 'en' 
}).then(function(response) {  
    var quotes = '"'; 
    var startingOfJson = "{" + quotes + "MovieList" + quotes + ":" + "["; 
    var endingOfJson = "}"; 
    var itemStart = quotes + "items" + quotes + ":" + "[{"; 
    var itemEnd = "}]"; 

    console.log(startingOfJson); 
    for (i = 0; i <= 20; i++) {  
    var titleForEverything = movieTitle(response.results[i].title); 

    movie(titleForEverything, function(err, data) { 

     console.log("{"); 
     console.log(quotes + "title" + quotes + ":" + quotes + data.Title + quotes + ","); 
     console.log(quotes + "imdb" + quotes + ":" + quotes + data.imdbID + quotes + ","); 
     console.log(quotes + "poster_med" + quotes + ":" + quotes + data.Poster + quotes + ","); 
     console.log(quotes + "poster_big" + quotes + ":" + quotes + data.Poster + quotes + ","); 
     var genres = quotes + "genres" + quotes + ":" + "[" + quotes + data.Genre + quotes + "]" + ","; 
     console.log(genres); 
     console.log(itemStart); 
     console.log(quotes + "torrent_magnet" + quotes + ":" + quotes + response.results[i].magnet + quotes + ","); 
     console.log(quotes + "torrent_seeds" + quotes + ":" + quotes + response.results[i].seeds + quotes + ","); 
     console.log(quotes + "torrent_peers" + quotes + ":" + quotes + response.results[i].peers + quotes + ","); 
     console.log(quotes + "id" + quotes + ":" + quotes + response.results[i].hash + quotes); 
     console.log(itemEnd); 
     if (i == 20) { 
     console.log("}"); 
     } else { 
     console.log("},") 
     } 
    }); 
    } 
}).catch(function(error) { 
    console.log('an error occured' + error); 
}); 
console.log("]}"); 

,你可以看到,磁铁,种子,哈希和同伴保持不变为所有结果生成!我该如何解决这个问题,为什么会发生这种情况?谢谢! :d

+2

在此处添加相关代码,而不是在pastebin中。我们不喜欢点击链接查看代码 –

+0

我很抱歉,我不知道该怎么做,我该怎么做? –

+0

http://stackoverflow.com/help/how-to-ask –

回答

1

您提交的合环上循环索引i内部函数的经典错误;当功能被执行时,i将已经有它的最终值。解决此问题的最简单方法是使用for (let i

+0

我不太明白它,你能解释一个代码示例? –

+0

可能与我的代码?因为我试着让我,它显示:SyntaxError:块范围声明(let,const,函数,类)尚未支持严格模式 –

+0

嗯.....然后尝试在严格模式? –