2017-05-23 14 views
0

jsonファイルへのリンクを指定したNode JS(例:http://data.phishtank.com/data/online-valid.json)のアプリケーションを作成する必要があります。オブジェクトをダウンロードしてから印刷します。これはどのように達成できますか?ノードjsを使用してリンクからjsonファイルをダウンロード

var checkIfPhishing = function(urlToPrint){ 
    var http = require('http'); 
    var fs = require('fs'); 

    var file = fs.createWriteStream("SiteObject.json"); 
    var request = http.get(urlToPrint, function(response) { 
    response.pipe(file);}); 

    var siteObj= fs.readFileSync("SiteObject.json"); 

    console.log(siteObj); 

}; 

ありがとうございました:これは私がこれまで持っている、それが動作していないようです!

+0

まず、機能のうち必要なものを入れてください。それはあなたのパフォーマンスを倍増させるでしょう... –

答えて

3

非同期と同期読み取りと書き込みを混在させることはできません。 あなたの場合、他のサーバーから自分のサーバーにデータをストリーミングすることを開始しますが、次にの同期を既に開始しています。 WICHブロックストリームは

youveはあなたの0バイトのファイルを読み込む後を...処理されますので、スレッドは、だから、そのストリームを記録仕上げに、その後、最初の変数にストリームを格納する必要があります。

だから、単純にこのようSTHん:

var data=""; 
var request = http.get(urlToPrint, function(response) { 
response.on("data",append=>data+=append).on("finish",()=>console.log(data));; 
}); 

ストア変数でストリームのasyncly提供塊、ストリームが終了すると、その文字列をログに記録します。

あなたもそれを保存したい場合:

var http = require('http'); 
var fs = require('fs'); 
function checkIfPhishing(urlToPrint){ 
    var file = fs.createWriteStream("SiteObject.json"); 
    var request = http.get(urlToPrint, function(response) { 
     response.on("finish",function(){ 
     console.log(fs.readFileSync("SiteObject.json",{encoding:"utf8"})); 
     }).pipe(file); 
    }); 
} 

これはまさにあなたのコードのようなものですが、それはそれは同期読み込む前に終了するストリームを待ち...

がしかし同期ことに注意してくださいあなたはコンソール/ブラウザに直接ストリームするかもしれません。

+0

ありがとうございます、しかし、もし私が最初にjsonオブジェクトを保存してからそれを印刷したいのであれば? – Nivolas

+0

@Nivolas shure編集 –

+0

あなたの答えとファイルをダウンロードするために書いたコードとの違いを教えてください。 – Nivolas

関連する問題